import { Injectable } from '@nestjs/common'; import { ClickHouse } from 'clickhouse'; import { isInternalThread } from 'node:worker_threads'; @Injectable() export class ClickhouseService { async ClickHouseConnect(parameterBody: any): Promise { let variable = 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: { // ... // }, }); // 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 ( EventTimestamp DateTime64, ParameterBody String, CreateDate DateTime64, ) ENGINE = MergeTree() PRIMARY KEY (EventTimestamp)` ]; let insertQuery = '\nINSERT INTO raw_parameters VALUES(toDateTime(now()), \'{{parameterBody}}\', toDateTime(now()));'; insertQuery = insertQuery.replace('{{parameterBody}}', parameterBody); console.log(insertQuery); // console.log(insertQuery); queries.push(insertQuery); for (let query of queries) { let r = await variable.query(query).toPromise(); // console.log(query, r); } console.log(variable); return variable; } }