Merge pull request #9849 from Budibase/fix/9739
Fix for exporting/importing apps with different attachment columns
This commit is contained in:
commit
3e3db5c712
|
@ -87,6 +87,7 @@ export const runMigration = async (
|
|||
const lengthStatement = length > 1 ? `[${count}/${length}]` : ""
|
||||
|
||||
const db = getDB(dbName)
|
||||
|
||||
try {
|
||||
const doc = await getMigrationsDoc(db)
|
||||
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
export const DB_EXPORT_FILE = "db.txt"
|
||||
export const GLOBAL_DB_EXPORT_FILE = "global.txt"
|
||||
export const STATIC_APP_FILES = ["manifest.json", "budibase-client.js"]
|
||||
|
|
|
@ -7,10 +7,15 @@ import {
|
|||
TABLE_ROW_PREFIX,
|
||||
USER_METDATA_PREFIX,
|
||||
} from "../../../db/utils"
|
||||
import { DB_EXPORT_FILE, GLOBAL_DB_EXPORT_FILE } from "./constants"
|
||||
import {
|
||||
DB_EXPORT_FILE,
|
||||
GLOBAL_DB_EXPORT_FILE,
|
||||
STATIC_APP_FILES,
|
||||
} from "./constants"
|
||||
import fs from "fs"
|
||||
import { join } from "path"
|
||||
import env from "../../../environment"
|
||||
|
||||
const uuid = require("uuid/v4")
|
||||
const tar = require("tar")
|
||||
const MemoryStream = require("memorystream")
|
||||
|
@ -91,14 +96,25 @@ export async function exportApp(appId: string, config?: ExportOpts) {
|
|||
const prodAppId = dbCore.getProdAppID(appId)
|
||||
const appPath = `${prodAppId}/`
|
||||
// export bucket contents
|
||||
let tmpPath
|
||||
let tmpPath = createTempFolder(uuid())
|
||||
if (!env.isTest()) {
|
||||
tmpPath = await objectStore.retrieveDirectory(
|
||||
ObjectStoreBuckets.APPS,
|
||||
appPath
|
||||
)
|
||||
} else {
|
||||
tmpPath = createTempFolder(uuid())
|
||||
// write just the static files
|
||||
if (config?.excludeRows) {
|
||||
for (let path of STATIC_APP_FILES) {
|
||||
const contents = await objectStore.retrieve(
|
||||
ObjectStoreBuckets.APPS,
|
||||
join(appPath, path)
|
||||
)
|
||||
fs.writeFileSync(join(tmpPath, path), contents)
|
||||
}
|
||||
}
|
||||
// get all of the files
|
||||
else {
|
||||
tmpPath = await objectStore.retrieveDirectory(
|
||||
ObjectStoreBuckets.APPS,
|
||||
appPath
|
||||
)
|
||||
}
|
||||
}
|
||||
const downloadedPath = join(tmpPath, appPath)
|
||||
if (fs.existsSync(downloadedPath)) {
|
||||
|
|
|
@ -13,13 +13,13 @@ function generateAttachmentFindParams(
|
|||
) {
|
||||
const params: CouchFindOptions = {
|
||||
selector: {
|
||||
$or: attachmentCols.map(col => ({ [col]: { $exists: true } })),
|
||||
_id: {
|
||||
$regex: `^${DocumentType.ROW}${SEPARATOR}${tableId}`,
|
||||
},
|
||||
},
|
||||
limit: FIND_LIMIT,
|
||||
}
|
||||
attachmentCols.forEach(col => (params.selector[col] = { $exists: true }))
|
||||
if (bookmark) {
|
||||
params.bookmark = bookmark
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue