Merge pull request #3289 from Budibase/fix/prevent-revert

fix revert on unpublished app
This commit is contained in:
Martin McKeaveney 2021-11-08 15:28:20 +01:00 committed by GitHub
commit 41d61a8310
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View File

@ -329,6 +329,19 @@ exports.sync = async ctx => {
ctx.throw(400, "This action cannot be performed for production apps") ctx.throw(400, "This action cannot be performed for production apps")
} }
const prodAppId = getDeployedAppID(appId) const prodAppId = getDeployedAppID(appId)
try {
const prodDb = new CouchDB(prodAppId, { skip_setup: true })
const info = await prodDb.info()
if (info.error) throw info.error
} catch (err) {
// the database doesn't exist. Don't replicate
ctx.body = {
message: "App sync not required, app not deployed.",
}
return
}
const replication = new Replication({ const replication = new Replication({
source: prodAppId, source: prodAppId,
target: appId, target: appId,

View File

@ -82,6 +82,13 @@ exports.revert = async ctx => {
const db = new CouchDB(productionAppId, { skip_setup: true }) const db = new CouchDB(productionAppId, { skip_setup: true })
const info = await db.info() const info = await db.info()
if (info.error) throw info.error if (info.error) throw info.error
const deploymentDoc = await db.get(DocumentTypes.DEPLOYMENTS)
if (
!deploymentDoc.history ||
Object.keys(deploymentDoc.history).length === 0
) {
throw new Error("No deployments for app")
}
} catch (err) { } catch (err) {
return ctx.throw(400, "App has not yet been deployed") return ctx.throw(400, "App has not yet been deployed")
} }