From f5b02ab184cf81d32cabe2883becc54c9f83c4fd Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Fri, 27 May 2022 10:57:06 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D0=BE=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.module.ts | 14 ++++++++++++-- src/configs/app.ts | 14 ++++++++++++++ src/datasources/issues.ts | 20 ++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 src/configs/app.ts create mode 100644 src/datasources/issues.ts diff --git a/src/app.module.ts b/src/app.module.ts index 37d8aff..2d388e4 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,12 +1,22 @@ import { EventEmitterModule } from '@app/event-emitter'; import { MainController } from '@app/event-emitter/main/main.controller'; +import { RedmineIssuesCacheWriterModule } from '@app/redmine-issues-cache-writer'; import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; import { AppController } from './app.controller'; import { AppService } from './app.service'; +import { Issues } from './datasources/issues'; +import configuration from './configs/app'; @Module({ - imports: [EventEmitterModule], + imports: [ + EventEmitterModule, + RedmineIssuesCacheWriterModule.register({ + issueDocumentScopeProvider: Issues.getDatasource, + }), + ConfigModule.forRoot({ load: [configuration] }), + ], controllers: [AppController, MainController], - providers: [AppService], + providers: [AppService, Issues], }) export class AppModule {} diff --git a/src/configs/app.ts b/src/configs/app.ts new file mode 100644 index 0000000..bc09d0d --- /dev/null +++ b/src/configs/app.ts @@ -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; +}; diff --git a/src/datasources/issues.ts b/src/datasources/issues.ts new file mode 100644 index 0000000..cb9f001 --- /dev/null +++ b/src/datasources/issues.ts @@ -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 + > { + 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); + } +}