From 16d15b27ca5bcbd5a0b6b47edc047e3de41ce7ae Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Sat, 18 Jun 2022 19:19:17 +0700 Subject: [PATCH] =?UTF-8?q?Event-Emitter=20-=20=D0=B4=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=D0=BC=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B0=D1=8F=20=D0=BB=D0=B8?= =?UTF-8?q?=D0=B1=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event-emitter/src/event-emitter.module.ts | 30 ++++++++++++------- src/app.module.ts | 4 ++- src/configs/app.ts | 6 ++++ 3 files changed, 28 insertions(+), 12 deletions(-) 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 () => {