UNPKG

@kitmi/data

Version:

Jacaranda Framework Data Access Model

63 lines (62 loc) 2.41 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_ChangeLog */ "default", { enumerable: true, get: function() { return _default; } }); const _utils = require("@kitmi/utils"); const _Rules = /*#__PURE__*/ _interop_require_default(require("../Rules")); const _allSync = require("@kitmi/validators/allSync"); const _types = require("@kitmi/types"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getConnector(entityModel, feature) { const app = entityModel.db.app; if (!app) { entityModel.db.connector.log('warn', `"changeLog" feature does not work when used without a service container app.`); return true; } return app.getService(feature.dataSource); } async function createLogEntry_(entityModel, feature, context, operation) { const logEntry = { entity: entityModel.meta.name, operation, which: context.options.$where, changedAt: _allSync.Types.DATETIME.typeObject.local() }; if (operation !== 'delete') { logEntry.data = context.latest; } else { logEntry.data = context.existing; } if (feature.withUser) { const user = entityModel.getValueFromContext(context, feature.withUser); if (user == null) { throw new _types.ApplicationError(`Cannot get value of [${feature.withUser}] from context. Entity: ${entityModel.meta.name}, operation: ${operation}`); } logEntry.changedBy = user; } // dry-run mode only checks validaty of data if (context.options.$dryRun) { return; } const clConnector = getConnector(entityModel, feature); await clConnector.insertOne_(feature.storeEntity, logEntry, context.connOptions); } const _default = { [_Rules.default.RULE_AFTER_CREATE]: (feature, entityModel, context)=>createLogEntry_(entityModel, feature, context, 'create'), [_Rules.default.RULE_AFTER_UPDATE]: (feature, entityModel, context)=>createLogEntry_(entityModel, feature, context, 'update'), [_Rules.default.RULE_AFTER_DELETE]: (feature, entityModel, context)=>createLogEntry_(entityModel, feature, context, 'delete') }; //# sourceMappingURL=changeLog.js.map