Добавлен новый коннект к базе пользователей в couchdb
This commit is contained in:
parent
3120b3a0a6
commit
bf3b5d2b5f
5 changed files with 63 additions and 5 deletions
|
|
@ -12,6 +12,8 @@ import { Issues } from './datasources/issues';
|
||||||
import configuration from './configs/app';
|
import configuration from './configs/app';
|
||||||
import { RedmineEventsGateway } from '@app/event-emitter/events/redmine-events.gateway';
|
import { RedmineEventsGateway } from '@app/event-emitter/events/redmine-events.gateway';
|
||||||
import { RedmineTypes } from '@app/redmine-types/index';
|
import { RedmineTypes } from '@app/redmine-types/index';
|
||||||
|
import { CouchDb } from './datasources/couchdb';
|
||||||
|
import { Users } from './datasources/users';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|
@ -22,7 +24,7 @@ import { RedmineTypes } from '@app/redmine-types/index';
|
||||||
ConfigModule.forRoot({ load: [configuration] }),
|
ConfigModule.forRoot({ load: [configuration] }),
|
||||||
],
|
],
|
||||||
controllers: [AppController, MainController],
|
controllers: [AppController, MainController],
|
||||||
providers: [AppService, Issues],
|
providers: [AppService, Issues, CouchDb, Users],
|
||||||
})
|
})
|
||||||
export class AppModule implements OnModuleInit {
|
export class AppModule implements OnModuleInit {
|
||||||
private logger = new Logger(AppModule.name);
|
private logger = new Logger(AppModule.name);
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,9 @@ const appConfig = {
|
||||||
issues:
|
issues:
|
||||||
process.env['ELTEX_REDMINE_HELPER_COUCHDB_ISSUES_DB_NAME'] ||
|
process.env['ELTEX_REDMINE_HELPER_COUCHDB_ISSUES_DB_NAME'] ||
|
||||||
'redmine_issues',
|
'redmine_issues',
|
||||||
|
users:
|
||||||
|
process.env['ELTEX_REDMINE_HELPER_COUCHDB_USERS_DB_NAME'] ||
|
||||||
|
'redmine_users',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
21
src/datasources/couchdb.ts
Normal file
21
src/datasources/couchdb.ts
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
|
import nano from 'nano';
|
||||||
|
import configuration from '../configs/app';
|
||||||
|
|
||||||
|
const config = configuration();
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class CouchDb {
|
||||||
|
private static logger = new Logger(CouchDb.name);
|
||||||
|
private static couchdb: nano.ServerScope | null = null;
|
||||||
|
|
||||||
|
static getCouchDb(): nano.ServerScope {
|
||||||
|
if (CouchDb.couchdb) {
|
||||||
|
return CouchDb.couchdb;
|
||||||
|
}
|
||||||
|
const n = nano(config.couchDbUrl);
|
||||||
|
CouchDb.logger.log(`CouchDb connected by url ${config.couchDbUrl} ...`);
|
||||||
|
CouchDb.couchdb = n;
|
||||||
|
return CouchDb.couchdb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,23 +2,28 @@ import { RedmineTypes } from '@app/redmine-types/index';
|
||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import configuration from '../configs/app';
|
import configuration from '../configs/app';
|
||||||
import nano = require('nano');
|
import nano = require('nano');
|
||||||
|
import { CouchDb } from './couchdb';
|
||||||
|
|
||||||
const config = configuration();
|
const config = configuration();
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class Issues {
|
export class Issues {
|
||||||
private static logger = new Logger(Issues.name);
|
private static logger = new Logger(Issues.name);
|
||||||
|
private static issuesDb = null;
|
||||||
|
|
||||||
static async getDatasource(): Promise<
|
static async getDatasource(): Promise<
|
||||||
nano.DocumentScope<RedmineTypes.Issue>
|
nano.DocumentScope<RedmineTypes.Issue>
|
||||||
> {
|
> {
|
||||||
Issues.logger.debug(`Issues datasource url = ${config.couchDbUrl}`);
|
if (Issues.issuesDb) {
|
||||||
const n = nano(config.couchDbUrl);
|
return Issues.issuesDb;
|
||||||
|
}
|
||||||
|
const n = CouchDb.getCouchDb();
|
||||||
const dbs = await n.db.list();
|
const dbs = await n.db.list();
|
||||||
Issues.logger.debug(`Issues datasource db name = ${config.dbs.issues}`);
|
|
||||||
if (!dbs.includes(config.dbs.issues)) {
|
if (!dbs.includes(config.dbs.issues)) {
|
||||||
await n.db.create(config.dbs.issues);
|
await n.db.create(config.dbs.issues);
|
||||||
}
|
}
|
||||||
return await n.db.use(config.dbs.issues);
|
Issues.issuesDb = await n.db.use(config.dbs.issues);
|
||||||
|
Issues.logger.log(`Connected to issues db - ${config.dbs.issues}`);
|
||||||
|
return Issues.issuesDb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
27
src/datasources/users.ts
Normal file
27
src/datasources/users.ts
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
import { RedmineTypes } from '@app/redmine-types/index';
|
||||||
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
|
import nano from 'nano';
|
||||||
|
import { CouchDb } from './couchdb';
|
||||||
|
import configuration from '../configs/app';
|
||||||
|
|
||||||
|
const config = configuration();
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class Users {
|
||||||
|
private static logger = new Logger(Users.name);
|
||||||
|
private static usersDb = null;
|
||||||
|
|
||||||
|
static async getUsers(): Promise<nano.DocumentScope<RedmineTypes.User>> {
|
||||||
|
if (Users.usersDb) {
|
||||||
|
return Users.usersDb;
|
||||||
|
}
|
||||||
|
const n = CouchDb.getCouchDb();
|
||||||
|
const dbs = await n.db.list();
|
||||||
|
if (!dbs.includes(config.dbs.users)) {
|
||||||
|
await n.db.create(config.dbs.users);
|
||||||
|
}
|
||||||
|
Users.usersDb = await n.db.use(config.dbs.users);
|
||||||
|
Users.logger.log(`Connected to users db - ${config.dbs.users}`);
|
||||||
|
return Users.usersDb;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue