From 40313185a5ee3935d12fdf924505bd00d30b2e6e Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Mon, 9 Dec 2024 08:29:21 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20da?= =?UTF-8?q?tasource=20=D0=B4=D0=BB=D1=8F=20daily-eccm-reports-v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../daily-eccm-reports-v2.datasource.ts | 32 +++++++++++++++++++ src/reports/daily-eccm-v2.report.service.ts | 19 +++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/couchdb-datasources/daily-eccm-reports-v2.datasource.ts create mode 100644 src/reports/daily-eccm-v2.report.service.ts diff --git a/src/couchdb-datasources/daily-eccm-reports-v2.datasource.ts b/src/couchdb-datasources/daily-eccm-reports-v2.datasource.ts new file mode 100644 index 0000000..cf2210b --- /dev/null +++ b/src/couchdb-datasources/daily-eccm-reports-v2.datasource.ts @@ -0,0 +1,32 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { CouchDb } from '@app/event-emitter/couchdb-datasources/couchdb'; +import nano from 'nano'; +import { + DailyEccmV2ReportService, + Report, +} from 'src/reports/daily-eccm-v2.report.service'; + +@Injectable() +export class DailyEccmReportsV2Datasource { + private static logger = new Logger(DailyEccmReportsV2Datasource.name); + private static db = null; + private static initilized = false; + + static async getDatasource(): Promise> { + if (DailyEccmReportsV2Datasource.initilized) { + return DailyEccmReportsV2Datasource.db; + } + DailyEccmReportsV2Datasource.initilized = true; + const n = CouchDb.getCouchDb(); + const dbName = 'eccm_daily_reports_v2'; + const dbs = await n.db.list(); + if (!dbs.includes(dbName)) { + await n.db.create(dbName); + } + DailyEccmReportsV2Datasource.db = await n.db.use(dbName); + DailyEccmReportsV2Datasource.logger.log( + `Connected to daily reports db - ${dbName}`, + ); + return DailyEccmReportsV2Datasource.db; + } +} diff --git a/src/reports/daily-eccm-v2.report.service.ts b/src/reports/daily-eccm-v2.report.service.ts new file mode 100644 index 0000000..fc2150d --- /dev/null +++ b/src/reports/daily-eccm-v2.report.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@nestjs/common'; + +export type Params = any; // TODO + +export type Report = { + id: string; + name: string; + datetime: number; + datetimeFormatted: string; + params: Params; // query?, schedule?, etc TODO + data: any; +}; + +@Injectable() +export class DailyEccmV2ReportService { + constructor(params: Params) { + return; + } +}