UNPKG

@kitmi/data

Version:

Jacaranda Framework Data Access Model

76 lines (75 loc) 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, /** * A rule specifies the change of state will be tracked automatically. * @module EntityFeatureRuntime_AutoCreate */ "default", { enumerable: true, get: function() { return _default; } }); const _utils = require("@kitmi/utils"); const _helpers = require("../helpers"); const _Rules = /*#__PURE__*/ _interop_require_default(require("../Rules")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const _default = { [_Rules.default.RULE_AFTER_CREATE]: async (feature, entity, context)=>{ const RelatedEntity = entity.getRelatedEntity(feature.relation); const keyValue = entity.valueOfKey(context.latest); const data = { ancestorId: keyValue, descendantId: keyValue, depth: 0 }; await RelatedEntity.create_(data); }, [_Rules.default.RULE_BEFORE_DELETE]: async (feature, entity, context)=>{ if (!context.options.$dryRun) { await entity.ensureTransaction_(context.options.$ctx, `${entity.meta.name}.closureTableOwner.beforeDelete`); } const key = entity.meta.keyField; const RelatedEntity = entity.getRelatedEntity(feature.relation); const { data } = await entity.findMany_({ $select: [ key ], $where: context.options.$where }); await (0, _utils.eachAsync_)(data, async (toDelete)=>{ const keyValue = toDelete[key]; await RelatedEntity.deleteMany_({ ancestorId: { $in: (0, _helpers.xrDataSet)(RelatedEntity.meta.name, { $select: [ 'ancestorId' ], $where: { descendantId: keyValue, depth: { $gt: 0 } } }) }, descendantId: { $in: (0, _helpers.xrDataSet)(RelatedEntity.meta.name, { $select: [ 'descendantId' ], $where: { ancestorId: keyValue } }) } }); }); } }; //# sourceMappingURL=hasClosureTable.js.map