Merge pull request #4526 from Budibase/fix/checklist-perf
Checklist API performance on default tenants
This commit is contained in:
commit
f0c3358d77
5 changed files with 19 additions and 12 deletions
|
@ -179,8 +179,11 @@ exports.getStartEndKeyURL = (base, baseKey, tenantId = null) => {
|
|||
/**
|
||||
* if in production this will use the CouchDB _all_dbs call to retrieve a list of databases. If testing
|
||||
* when using Pouch it will use the pouchdb-all-dbs package.
|
||||
* opts.efficient can be provided to make sure this call is always quick in a multi-tenant environment,
|
||||
* but it may not be 100% accurate in full efficiency mode (some tenantless apps may be missed).
|
||||
*/
|
||||
exports.getAllDbs = async () => {
|
||||
exports.getAllDbs = async (opts = { efficient: false }) => {
|
||||
const efficient = opts && opts.efficient
|
||||
// specifically for testing we use the pouch package for this
|
||||
if (env.isTest()) {
|
||||
return getCouch().allDbs()
|
||||
|
@ -197,7 +200,7 @@ exports.getAllDbs = async () => {
|
|||
}
|
||||
let couchUrl = `${exports.getCouchUrl()}/_all_dbs`
|
||||
let tenantId = getTenantId()
|
||||
if (!env.MULTI_TENANCY || tenantId === DEFAULT_TENANT_ID) {
|
||||
if (!env.MULTI_TENANCY || (!efficient && tenantId === DEFAULT_TENANT_ID)) {
|
||||
// just get all DBs when:
|
||||
// - single tenancy
|
||||
// - default tenant
|
||||
|
@ -225,13 +228,13 @@ exports.getAllDbs = async () => {
|
|||
*
|
||||
* @return {Promise<object[]>} returns the app information document stored in each app database.
|
||||
*/
|
||||
exports.getAllApps = async ({ dev, all, idsOnly } = {}) => {
|
||||
exports.getAllApps = async ({ dev, all, idsOnly, efficient } = {}) => {
|
||||
const CouchDB = getCouch()
|
||||
let tenantId = getTenantId()
|
||||
if (!env.MULTI_TENANCY && !tenantId) {
|
||||
tenantId = DEFAULT_TENANT_ID
|
||||
}
|
||||
let dbs = await exports.getAllDbs()
|
||||
let dbs = await exports.getAllDbs({ efficient })
|
||||
const appDbNames = dbs.filter(dbName => {
|
||||
const split = dbName.split(SEPARATOR)
|
||||
// it is an app, check the tenantId
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
let createUserModal
|
||||
let basicOnboardingModal
|
||||
|
||||
function openBasicOnoboardingModal() {
|
||||
function openBasicOnboardingModal() {
|
||||
createUserModal.hide()
|
||||
basicOnboardingModal.show()
|
||||
}
|
||||
|
@ -91,7 +91,7 @@
|
|||
</Layout>
|
||||
|
||||
<Modal bind:this={createUserModal}>
|
||||
<AddUserModal on:change={openBasicOnoboardingModal} />
|
||||
<AddUserModal on:change={openBasicOnboardingModal} />
|
||||
</Modal>
|
||||
<Modal bind:this={basicOnboardingModal}><BasicOnboardingModal {email} /></Modal>
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ export function createUsersStore() {
|
|||
}
|
||||
|
||||
async function invite({ email, builder, admin }) {
|
||||
await API.inviteUser({
|
||||
return API.inviteUser({
|
||||
email,
|
||||
builder,
|
||||
admin,
|
||||
|
@ -19,7 +19,7 @@ export function createUsersStore() {
|
|||
}
|
||||
|
||||
async function acceptInvite(inviteCode, password) {
|
||||
await API.acceptInvite({
|
||||
return API.acceptInvite({
|
||||
inviteCode,
|
||||
password,
|
||||
})
|
||||
|
|
|
@ -113,11 +113,11 @@ export const buildUserEndpoints = API => ({
|
|||
},
|
||||
|
||||
/**
|
||||
* Accepts an invitation to join the platform and creates a user.
|
||||
* Accepts an invite to join the platform and creates a user.
|
||||
* @param inviteCode the invite code sent in the email
|
||||
* @param password the password for the newly created user
|
||||
*/
|
||||
acceptInvitation: async ({ inviteCode, password }) => {
|
||||
acceptInvite: async ({ inviteCode, password }) => {
|
||||
return await API.post({
|
||||
url: "/api/global/users/invite/accept",
|
||||
body: {
|
||||
|
|
|
@ -246,12 +246,16 @@ exports.destroy = async function (ctx) {
|
|||
|
||||
exports.configChecklist = async function (ctx) {
|
||||
const db = getGlobalDB()
|
||||
const tenantId = getTenantId()
|
||||
|
||||
try {
|
||||
// TODO: Watch get started video
|
||||
|
||||
// Apps exist
|
||||
const apps = await getAllApps({ idsOnly: true })
|
||||
let apps = []
|
||||
if (!env.MULTI_TENANCY || tenantId) {
|
||||
// Apps exist
|
||||
apps = await getAllApps({ idsOnly: true, efficient: true })
|
||||
}
|
||||
|
||||
// They have set up SMTP
|
||||
const smtpConfig = await getScopedFullConfig(db, {
|
||||
|
|
Loading…
Reference in a new issue