Event-Emitter - динамическая либа

This commit is contained in:
Pavel Gnedov 2022-06-18 19:19:17 +07:00
parent a98326269e
commit 16d15b27ca
3 changed files with 28 additions and 12 deletions

View file

@ -1,4 +1,4 @@
import { Module } from '@nestjs/common'; import { DynamicModule, Module } from '@nestjs/common';
import { EventEmitterService } from './event-emitter.service'; import { EventEmitterService } from './event-emitter.service';
import { RedmineEventsGateway } from './events/redmine-events.gateway'; import { RedmineEventsGateway } from './events/redmine-events.gateway';
import { ServeStaticModule } from '@nestjs/serve-static'; import { ServeStaticModule } from '@nestjs/serve-static';
@ -7,14 +7,22 @@ import MainConfig from './configs/main-config';
import { ConfigModule } from '@nestjs/config'; import { ConfigModule } from '@nestjs/config';
import { RedmineDataLoader } from './redmine-data-loader/redmine-data-loader'; import { RedmineDataLoader } from './redmine-data-loader/redmine-data-loader';
import { MainController } from './main/main.controller'; import { MainController } from './main/main.controller';
import { MainConfigModel } from './models/main-config-model';
@Module({ @Module({})
export class EventEmitterModule {
static register(params?: { config?: MainConfigModel }): DynamicModule {
return {
module: EventEmitterModule,
imports: [ imports: [
ServeStaticModule.forRoot({ rootPath: join(__dirname, '..', 'client') }), ServeStaticModule.forRoot({
ConfigModule.forRoot({ load: [MainConfig] }), rootPath: join(__dirname, '..', 'client'),
}),
ConfigModule.forRoot({ load: [() => params?.config || MainConfig()] }),
], ],
providers: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], providers: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader],
exports: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], exports: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader],
controllers: [MainController], controllers: [MainController],
}) };
export class EventEmitterModule {} }
}

View file

@ -18,7 +18,9 @@ import { RedmineDataLoaderModule } from '@app/redmine-data-loader';
@Module({ @Module({
imports: [ imports: [
EventEmitterModule, EventEmitterModule.register({
config: configuration().redmineIssueEventEmitterConfig,
}),
RedmineIssuesCacheWriterModule.register({ RedmineIssuesCacheWriterModule.register({
issueDocumentScopeProvider: Issues.getDatasource, issueDocumentScopeProvider: Issues.getDatasource,
}), }),

View file

@ -1,3 +1,7 @@
import RedmineIssueEventEmitterConfigLoader from '@app/event-emitter/configs/main-config';
const redmineIssueEventEmitterConfig = RedmineIssueEventEmitterConfigLoader();
const appConfig = { const appConfig = {
couchDbUrl: couchDbUrl:
process.env['ELTEX_REDMINE_HELPER_COUCHDB_URL'] || 'http://localhost:5984', 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'] || process.env['ELTEX_REDMINE_HELPER_COUCHDB_USERS_DB_NAME'] ||
'redmine_users', 'redmine_users',
}, },
redmineIssueEventEmitterConfig: redmineIssueEventEmitterConfig,
}; };
export default () => { export default () => {