diff --git a/packages/server/src/api/controllers/application.ts b/packages/server/src/api/controllers/application.ts index e7d0ed7ba74..101257c3216 100644 --- a/packages/server/src/api/controllers/application.ts +++ b/packages/server/src/api/controllers/application.ts @@ -153,7 +153,11 @@ async function createInstance(appId: string, template: AppTemplate) { await createAllSearchIndex() if (template && template.useTemplate) { - await sdk.backups.importApp(appId, db, template) + const opts = { + importObjStoreContents: true, + updateAttachmentColumns: !template.key, // preserve attachments when using Budibase templates + } + await sdk.backups.importApp(appId, db, template, opts) } else { // create the users table await db.put(USERS_TABLE_SCHEMA) diff --git a/packages/server/src/sdk/app/applications/import.ts b/packages/server/src/sdk/app/applications/import.ts index f712548fcbb..c63708f42e8 100644 --- a/packages/server/src/sdk/app/applications/import.ts +++ b/packages/server/src/sdk/app/applications/import.ts @@ -123,6 +123,7 @@ export async function updateWithExport( // don't need obj store, the existing app already has everything we need await backups.importApp(devId, tempDb, template, { importObjStoreContents: false, + updateAttachmentColumns: true, }) const newMetadata = await getNewAppMetadata(tempDb, appDb) // get the documents to copy diff --git a/packages/server/src/sdk/app/backups/imports.ts b/packages/server/src/sdk/app/backups/imports.ts index f69fb9f5c86..3ec0e8833b1 100644 --- a/packages/server/src/sdk/app/backups/imports.ts +++ b/packages/server/src/sdk/app/backups/imports.ts @@ -170,7 +170,10 @@ export async function importApp( appId: string, db: Database, template: TemplateType, - opts: { importObjStoreContents: boolean } = { importObjStoreContents: true } + opts: { + importObjStoreContents: boolean + updateAttachmentColumns: boolean + } = { importObjStoreContents: true, updateAttachmentColumns: true } ) { let prodAppId = dbCore.getProdAppID(appId) let dbStream: any @@ -219,7 +222,9 @@ export async function importApp( if (!ok) { throw "Error loading database dump from template." } - await updateAttachmentColumns(prodAppId, db) + if (opts.updateAttachmentColumns) { + await updateAttachmentColumns(prodAppId, db) + } await updateAutomations(prodAppId, db) // clear up afterward if (tmpPath) {