@mbc-cqrs-serverless/import
Version:
77 lines • 4.26 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ImportModule = void 0;
const core_1 = require("@mbc-cqrs-serverless/core");
const common_1 = require("@nestjs/common");
const command_finished_queue_event_handler_1 = require("./event/command-finished.queue.event.handler");
const csv_import_queue_event_handler_1 = require("./event/csv-import.queue.event.handler");
const csv_import_sfn_event_handler_1 = require("./event/csv-import.sfn.event.handler");
const import_event_handler_1 = require("./event/import.event.handler");
const import_queue_event_handler_1 = require("./event/import.queue.event.handler");
const import_status_queue_event_handler_1 = require("./event/import-status.queue.event.handler");
const zip_import_queue_event_handler_1 = require("./event/zip-import.queue.event.handler");
const zip_import_sfn_event_handler_1 = require("./event/zip-import.sfn.event.handler");
const import_controller_1 = require("./import.controller");
const import_module_definition_1 = require("./import.module-definition");
const import_service_1 = require("./import.service");
let ImportModule = class ImportModule extends import_module_definition_1.ConfigurableModuleClass {
static register(options) {
const module = super.register(options);
const { enableController, profiles, imports } = options;
module.imports = [...(module.imports || []), ...(imports || [])];
const dynamicProviders = [
this.createStrategyMapFactory(import_module_definition_1.IMPORT_STRATEGY_MAP, profiles, (p) => p.importStrategy),
this.createStrategyMapFactory(import_module_definition_1.PROCESS_STRATEGY_MAP, profiles, (p) => p.processStrategy),
];
module.providers = [...(module.providers || []), ...dynamicProviders];
if (enableController) {
module.controllers = [...(module.controllers || []), import_controller_1.ImportController];
}
return module;
}
/**
* A private helper to create a factory provider for a strategy map.
* This factory injects all necessary strategy instances and maps them
* to their corresponding tableName from the profiles.
*/
static createStrategyMapFactory(provide, profiles, classExtractor) {
// Extract the class types to be used as injection tokens
const injectionTokens = profiles.map(classExtractor);
return {
provide,
useFactory: (...instances) => {
const map = new Map();
instances.forEach((instance, index) => {
map.set(profiles[index].tableName, instance);
});
return map;
},
inject: injectionTokens,
};
}
};
exports.ImportModule = ImportModule;
exports.ImportModule = ImportModule = __decorate([
(0, common_1.Module)({
imports: [core_1.DataStoreModule, core_1.QueueModule],
providers: [
import_service_1.ImportService,
import_event_handler_1.ImportEventHandler,
import_queue_event_handler_1.ImportQueueEventHandler,
csv_import_queue_event_handler_1.CsvImportQueueEventHandler,
csv_import_sfn_event_handler_1.CsvImportSfnEventHandler,
command_finished_queue_event_handler_1.CommandFinishedHandler,
import_status_queue_event_handler_1.ImportStatusHandler,
zip_import_queue_event_handler_1.ZipImportQueueEventHandler,
zip_import_sfn_event_handler_1.ZipImportSfnEventHandler,
],
exports: [import_service_1.ImportService],
})
], ImportModule);
//# sourceMappingURL=import.module.js.map