UNPKG

@softkit/typeorm

Version:

This library has some useful utilities for typeorm, entities, repositories, useful subscribers, interceptors.

59 lines 2.6 kB
"use strict"; 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