"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const uuid_1 = require("oak-domain/lib/utils/uuid"); const executor_1 = require("oak-domain/lib/utils/executor"); const checkers = [ { // 删除文章分类级联删除extraFile action: 'remove', type: 'logical', entity: 'articleMenu', checker(operation, context) { const { filter } = operation; return context.operate('extraFile', { id: (0, uuid_1.generateNewId)(), action: 'remove', data: {}, filter: { articleMenu: filter, }, }, {}); }, }, { // 删除文章分类级联删除子文章分类 action: 'remove', type: 'logical', entity: 'articleMenu', checker(operation, context) { const { filter } = operation; if (filter) { return (0, executor_1.pipeline)(() => context.select('articleMenu', { data: { id: 1, articleMenu$parent: { $entity: 'articleMenu', data: { id: 1, } } }, filter, }, {}), (articleMenus) => { const children = articleMenus.map((ele) => ele.articleMenu$parent).flat(); const childrenIds = children?.map((ele) => ele.id); if (childrenIds && childrenIds.length > 0) { return context.operate("articleMenu", { id: (0, uuid_1.generateNewId)(), action: "remove", data: {}, filter: { id: { $in: childrenIds, } }, }, {}); } }); } }, }, { // 删除文章分类级联删除子文章 action: 'remove', type: 'logical', entity: 'articleMenu', checker(operation, context) { const { filter } = operation; if (filter) { return (0, executor_1.pipeline)(() => context.select('articleMenu', { data: { id: 1, article$articleMenu: { $entity: 'article', data: { id: 1, } } }, filter, }, {}), (articleMenus) => { const articles = articleMenus.map((ele) => ele.article$articleMenu).flat(); const articleIds = articles?.map((ele) => ele.id); if (articleIds && articleIds.length > 0) { return context.operate("article", { id: (0, uuid_1.generateNewId)(), action: "remove", data: {}, filter: { id: { $in: articleIds, } }, }, {}); } }); } }, }, ]; exports.default = checkers;