From 18df43e1976267e032966235fb96ea92b219c149 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 5 Jul 2022 18:52:53 +0100 Subject: [PATCH] Fix for #5709 making sure public API can update existing apps. --- .../server/src/api/controllers/public/applications.ts | 4 ++-- packages/server/src/api/controllers/public/utils.ts | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/server/src/api/controllers/public/applications.ts b/packages/server/src/api/controllers/public/applications.ts index 0bb847be22..6fa5185d23 100644 --- a/packages/server/src/api/controllers/public/applications.ts +++ b/packages/server/src/api/controllers/public/applications.ts @@ -1,6 +1,6 @@ const { getAllApps } = require("@budibase/backend-core/db") const { updateAppId } = require("@budibase/backend-core/context") -import { search as stringSearch } from "./utils" +import { search as stringSearch, addRev } from "./utils" import * as controller from "../application" import { Application } from "../../../definitions/common" @@ -47,7 +47,7 @@ export async function read(ctx: any, next: any) { } export async function update(ctx: any, next: any) { - ctx.request.body = fixAppID(ctx.request.body, ctx.params) + ctx.request.body = await addRev(fixAppID(ctx.request.body, ctx.params)) updateAppId(ctx.params.appId) await controller.update(ctx) await setResponseApp(ctx) diff --git a/packages/server/src/api/controllers/public/utils.ts b/packages/server/src/api/controllers/public/utils.ts index 7bdd865aa4..8a7d7c4f4e 100644 --- a/packages/server/src/api/controllers/public/utils.ts +++ b/packages/server/src/api/controllers/public/utils.ts @@ -1,5 +1,6 @@ const { getAppDB } = require("@budibase/backend-core/context") import { isExternalTable } from "../../../integrations/utils" +import { APP_PREFIX, DocumentTypes } from "../../../db/utils" export async function addRev( body: { _id?: string; _rev?: string }, @@ -8,9 +9,15 @@ export async function addRev( if (!body._id || (tableId && isExternalTable(tableId))) { return body } + let id = body._id + if (body._id.startsWith(APP_PREFIX)) { + id = DocumentTypes.APP_METADATA + } const db = getAppDB() - const dbDoc = await db.get(body._id) + const dbDoc = await db.get(id) body._rev = dbDoc._rev + // update ID in case it is an app ID + body._id = id return body }