@kitmi/data
Version:
Jacaranda Framework Data Access Model
66 lines (65 loc) • 2.31 kB
JavaScript
"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