Добавлена загрузка основной конфигурации

This commit is contained in:
Pavel Gnedov 2022-05-27 10:57:06 +07:00
parent 2b2830e656
commit f5b02ab184
3 changed files with 46 additions and 2 deletions

View file

@ -1,12 +1,22 @@
import { EventEmitterModule } from '@app/event-emitter'; import { EventEmitterModule } from '@app/event-emitter';
import { MainController } from '@app/event-emitter/main/main.controller'; import { MainController } from '@app/event-emitter/main/main.controller';
import { RedmineIssuesCacheWriterModule } from '@app/redmine-issues-cache-writer';
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller'; import { AppController } from './app.controller';
import { AppService } from './app.service'; import { AppService } from './app.service';
import { Issues } from './datasources/issues';
import configuration from './configs/app';
@Module({ @Module({
imports: [EventEmitterModule], imports: [
EventEmitterModule,
RedmineIssuesCacheWriterModule.register({
issueDocumentScopeProvider: Issues.getDatasource,
}),
ConfigModule.forRoot({ load: [configuration] }),
],
controllers: [AppController, MainController], controllers: [AppController, MainController],
providers: [AppService], providers: [AppService, Issues],
}) })
export class AppModule {} export class AppModule {}

14
src/configs/app.ts Normal file
View file

@ -0,0 +1,14 @@
const appConfig = {
couchDbUrl:
process.env['ELTEX_REDMINE_HELPER_COUCHDB_URL'] || 'http://localhost:5984',
dbs: {
issues:
process.env['ELTEX_REDMINE_HELPER_COUCHDB_ISSUES_DB_NAME'] ||
'redmine_issues',
},
};
export default () => {
return appConfig;
};

20
src/datasources/issues.ts Normal file
View file

@ -0,0 +1,20 @@
import { RedmineTypes } from '@app/redmine-types/index';
import { Injectable } from '@nestjs/common';
import nano from 'nano';
import configuration from '../configs/app';
const config = configuration();
@Injectable()
export class Issues {
static async getDatasource(): Promise<
nano.DocumentScope<RedmineTypes.Issue>
> {
const n = nano(config.couchDbUrl);
const dbs = await n.db.list();
if (!dbs.includes(config.dbs.issues)) {
await n.db.create(config.dbs.issues);
}
return await n.db.use(config.dbs.issues);
}
}