diff --git a/libs/event-emitter/src/event-emitter.module.ts b/libs/event-emitter/src/event-emitter.module.ts index 60d1114..7ed90de 100644 --- a/libs/event-emitter/src/event-emitter.module.ts +++ b/libs/event-emitter/src/event-emitter.module.ts @@ -1,4 +1,4 @@ -import { Module } from '@nestjs/common'; +import { DynamicModule, Module } from '@nestjs/common'; import { EventEmitterService } from './event-emitter.service'; import { RedmineEventsGateway } from './events/redmine-events.gateway'; import { ServeStaticModule } from '@nestjs/serve-static'; @@ -7,14 +7,22 @@ import MainConfig from './configs/main-config'; import { ConfigModule } from '@nestjs/config'; import { RedmineDataLoader } from './redmine-data-loader/redmine-data-loader'; import { MainController } from './main/main.controller'; +import { MainConfigModel } from './models/main-config-model'; -@Module({ - imports: [ - ServeStaticModule.forRoot({ rootPath: join(__dirname, '..', 'client') }), - ConfigModule.forRoot({ load: [MainConfig] }), - ], - providers: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], - exports: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], - controllers: [MainController], -}) -export class EventEmitterModule {} +@Module({}) +export class EventEmitterModule { + static register(params?: { config?: MainConfigModel }): DynamicModule { + return { + module: EventEmitterModule, + imports: [ + ServeStaticModule.forRoot({ + rootPath: join(__dirname, '..', 'client'), + }), + ConfigModule.forRoot({ load: [() => params?.config || MainConfig()] }), + ], + providers: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], + exports: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], + controllers: [MainController], + }; + } +} diff --git a/src/app.module.ts b/src/app.module.ts index ed35cad..3ff2751 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -18,7 +18,9 @@ import { RedmineDataLoaderModule } from '@app/redmine-data-loader'; @Module({ imports: [ - EventEmitterModule, + EventEmitterModule.register({ + config: configuration().redmineIssueEventEmitterConfig, + }), RedmineIssuesCacheWriterModule.register({ issueDocumentScopeProvider: Issues.getDatasource, }), diff --git a/src/configs/app.ts b/src/configs/app.ts index 0cb9b82..64e2c38 100644 --- a/src/configs/app.ts +++ b/src/configs/app.ts @@ -1,3 +1,7 @@ +import RedmineIssueEventEmitterConfigLoader from '@app/event-emitter/configs/main-config'; + +const redmineIssueEventEmitterConfig = RedmineIssueEventEmitterConfigLoader(); + const appConfig = { couchDbUrl: process.env['ELTEX_REDMINE_HELPER_COUCHDB_URL'] || 'http://localhost:5984', @@ -10,6 +14,8 @@ const appConfig = { process.env['ELTEX_REDMINE_HELPER_COUCHDB_USERS_DB_NAME'] || 'redmine_users', }, + + redmineIssueEventEmitterConfig: redmineIssueEventEmitterConfig, }; export default () => {