import { Injectable } from '@nestjs/common'; import { ClickHouse } from 'clickhouse'; import { isInternalThread } from 'node:worker_threads'; @Injectable() export class ClickhouseService { async ClickHouseConnect(): Promise{ let connectionData = new ClickHouse({ url: 'http://192.168.2.37', port: 8123, // url: DATABASE_NAME, // PORT: DATABASE_PORT, debug: false, basicAuth: { username: 'root', password: 'dbss', }, isUseGzip: false, trimQuery: false, usePost: false, format: "json", // "json" || "csv" || "tsv" raw: false, config: { session_id: 'session_id if neeed', session_timeout: 60, output_format_json_quote_64bit_integers: 0, enable_http_compression: 0, database: 'zvks', }, // This object merge with request params (see request lib docs) // reqParams: { // ... // }, }); return connectionData; } async ClickHouseDBsCreate(parameterBody: any): Promise { let connectionData = await this.ClickHouseConnect(); // let queries = [ // 'DROP TABLE IF EXISTS session_temp', // `CREATE TABLE IF NOT EXISTS session_temp ( // id UInt128, // body TEXT, // ips Array(UInt32), // ueries Nested ( // id UInt32, // act String, // uptime DateTime64 // ), // create_date DateTime64, // update_time DateTime64, // ) ENGINE = MergeTree() // PRIMARY KEY (id)` // ]; let queries = [ `CREATE TABLE IF NOT EXISTS raw_parameters ( EventDataTime DateTime64, ParameterBody String, CreateDataTime DateTime64, ) ENGINE = MergeTree() PRIMARY KEY (EventDataTime)`, `CREATE TABLE IF NOT EXISTS complex_parameters ( EventDataTime DateTime64, ParameterBody String, CreateDate DateTime64, ) ENGINE = MergeTree() PRIMARY KEY (EventDataTime)`, `CREATE TABLE IF NOT EXISTS raw_parameters_extended ( EventDataTime DateTime64, IDParameter UInt64, ParameterName String, ParameterValue Float64, ParameterBody String, CreateDate DateTime64, ) ENGINE = MergeTree() PRIMARY KEY (EventDataTime)`, `CREATE TABLE IF NOT EXISTS complex_parameters_extended ( EventDataTime DateTime64, IDParameter UInt64, ParameterName String, ParameterValue Float64, ParameterBody String, CreateDate DateTime64, ) ENGINE = MergeTree() PRIMARY KEY (EventDataTime)`, `CREATE TABLE IF NOT EXISTS status_events ( EventDataTime DateTime64, IDParameter UInt64, ParameterName String, ParameterValue Float64, ParameterBody String, PreviousStatus Int32, CurrentStatus Int32, CreateDate DateTime64, ) ENGINE = MergeTree() PRIMARY KEY (EventDataTime)`, ]; // let insertQuery = '\nINSERT INTO raw_parameters VALUES(toDateTime(now()), \'{{parameterBody}}\', toDateTime(now()));'; // insertQuery = insertQuery.replace('{{parameterBody}}', parameterBody); // console.log(insertQuery); // queries.push(insertQuery); for (let query of queries) { let r = await connectionData.query(query).toPromise(); // console.log(query, r); } console.log(connectionData); return connectionData; } }