diff --git a/packages/backend-core/src/context/index.js b/packages/backend-core/src/context/index.js index 0555556157..1c596e74e5 100644 --- a/packages/backend-core/src/context/index.js +++ b/packages/backend-core/src/context/index.js @@ -298,9 +298,6 @@ function getContextDB(key, opts) { break } - //If the appId is specified, override context - toUseAppId = opts?.appId ? opts?.appId : toUseAppId - db = dangerousGetDB(toUseAppId, opts) try { cls.setOnContext(key, db) diff --git a/packages/server/src/api/controllers/application.ts b/packages/server/src/api/controllers/application.ts index 9e55964fa9..b5a3217171 100644 --- a/packages/server/src/api/controllers/application.ts +++ b/packages/server/src/api/controllers/application.ts @@ -49,6 +49,7 @@ const { getAppDB, getProdAppDB, updateAppId, + doInAppContext, } = require("@budibase/backend-core/context") import { getUniqueRows } from "../../utilities/usageQuota/rows" import { quotas } from "@budibase/pro" @@ -340,6 +341,7 @@ export const update = async (ctx: any) => { const data = await updateAppPackage(ctx.request.body, ctx.params.appId) ctx.status = 200 ctx.body = data + console.log(JSON.stringify(data)) } export const updateClient = async (ctx: any) => { @@ -502,22 +504,24 @@ export const sync = async (ctx: any, next: any) => { } const updateAppPackage = async (appPackage: any, appId: any) => { - const db = getAppDB({ appId }) - const application = await db.get(DocumentTypes.APP_METADATA) + return doInAppContext(appId, async () => { + const db = getAppDB() + const application = await db.get(DocumentTypes.APP_METADATA) - const newAppPackage = { ...application, ...appPackage } - if (appPackage._rev !== application._rev) { - newAppPackage._rev = application._rev - } + const newAppPackage = { ...application, ...appPackage } + if (appPackage._rev !== application._rev) { + newAppPackage._rev = application._rev + } - // the locked by property is attached by server but generated from - // Redis, shouldn't ever store it - delete newAppPackage.lockedBy + // the locked by property is attached by server but generated from + // Redis, shouldn't ever store it + delete newAppPackage.lockedBy - const response = await db.put(newAppPackage) - // remove any cached metadata, so that it will be updated - await appCache.invalidateAppMetadata(appId) - return response + const response = await db.put(newAppPackage) + // remove any cached metadata, so that it will be updated + await appCache.invalidateAppMetadata(appId) + return response + }) } const createEmptyAppPackage = async (ctx: any, app: any) => {