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({})
imports: [ export class EventEmitterModule {
ServeStaticModule.forRoot({ rootPath: join(__dirname, '..', 'client') }), static register(params?: { config?: MainConfigModel }): DynamicModule {
ConfigModule.forRoot({ load: [MainConfig] }), return {
], module: EventEmitterModule,
providers: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], imports: [
exports: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], ServeStaticModule.forRoot({
controllers: [MainController], rootPath: join(__dirname, '..', 'client'),
}) }),
export class EventEmitterModule {} ConfigModule.forRoot({ load: [() => params?.config || MainConfig()] }),
],
providers: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader],
exports: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader],
controllers: [MainController],
};
}
}

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 () => {