UNPKG

@kitmi/data

Version:

Jacaranda Framework Data Access Model

66 lines (65 loc) 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _utils = require("@kitmi/utils"); const _Rules = /*#__PURE__*/ _interop_require_default(require("../Rules")); const _helpers = require("../helpers"); const _TypeGenerators = /*#__PURE__*/ _interop_require_default(require("../TypeGenerators")); const _errors = require("../utils/errors"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * A rule specifies the entity will not be deleted physically. * @module EntityFeatureRuntime_LogicalDeletion */ const beforeFind = (feature, entityModel, context)=>{ const findOptions = context.options; if (!findOptions.$includeDeleted) { findOptions.$where = (0, _helpers.mergeWhere)(findOptions.$where, { [feature.field]: { $ne: feature.value } }); } }; const _default = { [_Rules.default.RULE_BEFORE_FIND]: beforeFind, [_Rules.default.RULE_BEFORE_FIND + 'Sync']: beforeFind, [_Rules.default.RULE_BEFORE_DELETE]: async (feature, entityModel, context)=>{ const options = context.options; if (!options.$physical) { const { field, value, timestampField } = feature; const updateTo = { [field]: value }; if (timestampField) { updateTo[timestampField] = (0, _TypeGenerators.default)(entityModel.meta.fields[timestampField], context.i18n); } const updateOpts = { $where: options.$where, $getUpdated: options.$getDeleted, $bypassReadOnly: new Set([ field, timestampField ]), $logicalDeletion: true }; if (context.isOne) { context.result = await entityModel.updateOne_(updateTo, updateOpts); } else { context.result = await entityModel.updateMany_(updateTo, updateOpts); } throw new _errors.OpCompleted(context.result); } } }; //# sourceMappingURL=logicalDeletion.js.map