@softkit/typeorm
Version:
This library has some useful utilities for typeorm, entities, repositories, useful subscribers, interceptors.
59 lines • 2.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClsPresetSubscriber = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
const nestjs_cls_1 = require("nestjs-cls");
const typeorm_1 = require("typeorm");
const persistence_api_1 = require("@softkit/persistence-api");
let ClsPresetSubscriber = class ClsPresetSubscriber {
constructor(dataSource, clsService) {
this.dataSource = dataSource;
this.clsService = clsService;
this.dataSource.subscribers.push(this);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
beforeInsert(event) {
/* istanbul ignore next */
if (event.entity === undefined) {
return;
}
return this.handleEntityChangeEvent(event.metadata.inheritanceTree, event.entity, persistence_api_1.PresetType.INSERT);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
beforeUpdate(event) {
/* istanbul ignore next */
if (event.entity === undefined) {
return;
}
return this.handleEntityChangeEvent(event.metadata.inheritanceTree, event.entity, persistence_api_1.PresetType.UPDATE);
}
handleEntityChangeEvent(
// eslint-disable-next-line @typescript-eslint/ban-types
inheritanceTree,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
entity, presetType) {
const topLevelEntity = inheritanceTree[0].name;
const entityHierarchy = inheritanceTree.map((e) => e.name);
const metadataFields = persistence_api_1.defaultClsMetadataStore.getMetadataFieldsByEntityHierarchy(topLevelEntity, entityHierarchy);
for (const field of metadataFields) {
if (field.presetType === persistence_api_1.PresetType.ALL ||
presetType === field.presetType) {
const currentValue = entity[field.entityPropertyName];
// set value only if it's not provided
if (currentValue === null || currentValue === undefined) {
entity[field.entityPropertyName] =
this.clsService.get()[field.clsStorageKey];
}
}
}
return entity;
}
};
exports.ClsPresetSubscriber = ClsPresetSubscriber;
exports.ClsPresetSubscriber = ClsPresetSubscriber = tslib_1.__decorate([
(0, common_1.Injectable)(),
tslib_1.__metadata("design:paramtypes", [typeorm_1.DataSource,
nestjs_cls_1.ClsService])
], ClsPresetSubscriber);
//# sourceMappingURL=cls-preset.subscriber.js.map