import { generateNewId } from 'oak-domain/lib/utils/uuid'; import { pipeline } from '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: generateNewId(), action: 'remove', data: {}, filter: { articleMenu: filter, }, }, {}); }, }, { // 删除文章分类级联删除子文章分类 action: 'remove', type: 'logical', entity: 'articleMenu', checker(operation, context) { const { filter } = operation; if (filter) { return 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: generateNewId(), action: "remove", data: {}, filter: { id: { $in: childrenIds, } }, }, {}); } }); } }, }, { // 删除文章分类级联删除子文章 action: 'remove', type: 'logical', entity: 'articleMenu', checker(operation, context) { const { filter } = operation; if (filter) { return 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: generateNewId(), action: "remove", data: {}, filter: { id: { $in: articleIds, } }, }, {}); } }); } }, }, ]; export default checkers;