diff --git a/src/couchdb-datasources/changes.ts b/src/couchdb-datasources/changes.ts new file mode 100644 index 0000000..925a485 --- /dev/null +++ b/src/couchdb-datasources/changes.ts @@ -0,0 +1,32 @@ +import { CouchDb } from '@app/event-emitter/couchdb-datasources/couchdb'; +import { Injectable, Logger } from '@nestjs/common'; +import nano from 'nano'; + +@Injectable() +export class Changes { + private static logger = new Logger(Changes.name); + private static changesDb = null; + private static initilized = false; + + // TODO: Указать полные типы данных + + static async getDatasource(): Promise> { + if (Changes.initilized) { + return Changes.changesDb; + } + Changes.initilized = true; + const n = CouchDb.getCouchDb(); + const changesDbName = ''; // TODO: Загрузить из конфига + const dbs = await n.db.list(); + if (!dbs.includes(changesDbName)) { + await n.db.create(changesDbName); + } + Changes.changesDb = await n.db.use(changesDbName); + Changes.logger.log(`Connected to changes db - ${changesDbName}`); + return Changes.changesDb; + } + + async getDatasource(): Promise> { + return await Changes.getDatasource(); + } +}