80 lines
2.5 KiB
TypeScript
80 lines
2.5 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { ClickHouse } from 'clickhouse';
|
|
import { isInternalThread } from 'node:worker_threads';
|
|
|
|
@Injectable()
|
|
export class ClickhouseService {
|
|
async ClickHouseConnect(parameterBody: any): Promise<any> {
|
|
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;
|
|
}
|
|
}
|