|
|
|
@ -1,4 +1,7 @@ |
|
|
|
const { EMPTY_LAYOUT } = require("../../constants/layouts") |
|
|
|
const { |
|
|
|
EMPTY_LAYOUT, |
|
|
|
BASE_LAYOUT_PROP_IDS, |
|
|
|
} = require("../../constants/layouts") |
|
|
|
const CouchDB = require("../../db") |
|
|
|
const { generateLayoutID, getScreenParams } = require("../../db/utils") |
|
|
|
|
|
|
|
@ -26,15 +29,19 @@ exports.destroy = async function (ctx) { |
|
|
|
const layoutId = ctx.params.layoutId, |
|
|
|
layoutRev = ctx.params.layoutRev |
|
|
|
|
|
|
|
const layoutsUsedByScreens = ( |
|
|
|
await db.allDocs( |
|
|
|
getScreenParams(null, { |
|
|
|
include_docs: true, |
|
|
|
}) |
|
|
|
) |
|
|
|
).rows.map(element => element.doc.layoutId) |
|
|
|
if (layoutsUsedByScreens.includes(layoutId)) { |
|
|
|
ctx.throw(400, "Cannot delete a layout that's being used by a screen") |
|
|
|
if (Object.values(BASE_LAYOUT_PROP_IDS).includes(layoutId)) { |
|
|
|
ctx.throw(400, "Cannot delete a built-in layout") |
|
|
|
} else { |
|
|
|
const layoutsUsedByScreens = ( |
|
|
|
await db.allDocs( |
|
|
|
getScreenParams(null, { |
|
|
|
include_docs: true, |
|
|
|
}) |
|
|
|
) |
|
|
|
).rows.map(element => element.doc.layoutId) |
|
|
|
if (layoutsUsedByScreens.includes(layoutId)) { |
|
|
|
ctx.throw(400, "Cannot delete a layout that's being used by a screen") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
await db.remove(layoutId, layoutRev) |
|
|
|
|