diff --git a/src/database/clickhouse/clickhouse.service.ts b/src/database/clickhouse/clickhouse.service.ts index d81f159..13bb04c 100644 --- a/src/database/clickhouse/clickhouse.service.ts +++ b/src/database/clickhouse/clickhouse.service.ts @@ -4,7 +4,7 @@ import { isInternalThread } from 'node:worker_threads'; @Injectable() export class ClickhouseService { - async ClickHouseConnect(): Promise{ + async ClickHouseConnect(): Promise{ let connectionData = new ClickHouse({ url: 'http://192.168.2.37', port: 8123, @@ -38,7 +38,7 @@ export class ClickhouseService { } - async ClickHouseDBsCreate(parameterBody: any): Promise { + async ClickHouseDBsCreate(): Promise { let connectionData = await this.ClickHouseConnect(); // let queries = [ @@ -63,16 +63,22 @@ export class ClickhouseService { `CREATE TABLE IF NOT EXISTS raw_parameters ( EventDataTime DateTime64, ParameterBody String, - CreateDataTime DateTime64, + CreateDataTime DateTime, ) ENGINE = MergeTree() - PRIMARY KEY (EventDataTime)`, + PRIMARY KEY (EventDataTime) + PARTITION BY toYYYYMM(CreateDataTime) + TTL CreateDataTime + INTERVAL 3 MONTH + SETTINGS storage_policy = 'default'`, `CREATE TABLE IF NOT EXISTS complex_parameters ( EventDataTime DateTime64, ParameterBody String, - CreateDate DateTime64, + CreateDataTime DateTime, ) ENGINE = MergeTree() - PRIMARY KEY (EventDataTime)`, + PRIMARY KEY (EventDataTime) + PARTITION BY toYYYYMM(CreateDataTime) + TTL CreateDataTime + INTERVAL 3 MONTH + SETTINGS storage_policy = 'default'`, `CREATE TABLE IF NOT EXISTS raw_parameters_extended ( EventDataTime DateTime64, @@ -80,9 +86,12 @@ export class ClickhouseService { ParameterName String, ParameterValue Float64, ParameterBody String, - CreateDate DateTime64, + CreateDataTime DateTime, ) ENGINE = MergeTree() - PRIMARY KEY (EventDataTime)`, + PRIMARY KEY (EventDataTime) + PARTITION BY toYYYYMM(CreateDataTime) + TTL CreateDataTime + INTERVAL 3 MONTH + SETTINGS storage_policy = 'default'`, `CREATE TABLE IF NOT EXISTS complex_parameters_extended ( EventDataTime DateTime64, @@ -90,9 +99,12 @@ export class ClickhouseService { ParameterName String, ParameterValue Float64, ParameterBody String, - CreateDate DateTime64, + CreateDataTime DateTime, ) ENGINE = MergeTree() - PRIMARY KEY (EventDataTime)`, + PRIMARY KEY (EventDataTime) + PARTITION BY toYYYYMM(CreateDataTime) + TTL CreateDataTime + INTERVAL 3 MONTH + SETTINGS storage_policy = 'default'`, `CREATE TABLE IF NOT EXISTS status_events ( EventDataTime DateTime64, @@ -102,7 +114,7 @@ export class ClickhouseService { ParameterBody String, PreviousStatus Int32, CurrentStatus Int32, - CreateDate DateTime64, + CreateDataTime DateTime, ) ENGINE = MergeTree() PRIMARY KEY (EventDataTime)`, @@ -119,7 +131,33 @@ export class ClickhouseService { // console.log(query, r); } - console.log(connectionData); + // console.log(connectionData); return connectionData; } + + async ClickHouseAddRecords(recordFormat: string, parameterBody: any): Promise{ + let connectionData = await this.ClickHouseDBsCreate(); + switch(recordFormat){ + case 'raw': + let insertRawQuery = 'INSERT INTO raw_parameters VALUES(toDateTime(now()), \'{{parameterBody}}\', toDateTime(now()));'; + // console.log(insertQuery); + insertRawQuery = insertRawQuery.replace('{{parameterBody}}', parameterBody); + // console.log(insertRawQuery); + // for (let query of insertQuery) { + let retRaw = await connectionData.query(insertRawQuery).toPromise(); + // console.log(retRaw); + // } + break; + case 'complex': + let insertComplexQuery = 'INSERT INTO complex_parameters VALUES(toDateTime(now()), \'{{parameterBody}}\', toDateTime(now()));'; + // console.log(insertQuery); + insertComplexQuery = insertComplexQuery.replace('{{parameterBody}}', parameterBody); + // console.log(insertComplexQuery); + // for (let query of insertQuery) { + let retComplex = await connectionData.query(insertComplexQuery).toPromise(); + // console.log(retComplex); + // } + break; + } + } } diff --git a/src/zvksmetrics/zvksmetrics.service.ts b/src/zvksmetrics/zvksmetrics.service.ts index d37d011..8d7d47f 100644 --- a/src/zvksmetrics/zvksmetrics.service.ts +++ b/src/zvksmetrics/zvksmetrics.service.ts @@ -78,12 +78,15 @@ export class ZvksmetricsService { let intermediate = await this.getComplexMetricsValues(inp, prev, complex, model, scope); - // console.log(intermediate); + console.log(intermediate); let ctp: any = classToPlain(intermediate); - let parameterBody: string = JSON.stringify(ctp); + let copmplexParameterBody: string = JSON.stringify(ctp); + let rtp: any = classToPlain(inputData); + let rawParameterBody: string = JSON.stringify(rtp); // console.log(parameterBody); let abc = new ClickhouseService(); - abc.ClickHouseDBsCreate(parameterBody); + await abc.ClickHouseAddRecords('raw', rawParameterBody); + await abc.ClickHouseAddRecords('complex', copmplexParameterBody); // const val = JSON.parse(JSON.stringify(model[0].values));