diff --git a/package.json b/package.json index f7a35cb..9e1bc1f 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,9 @@ "license": "MIT", "scripts": { "test": "(tstest test/ --web)", - "build": "(tsbuild --web)" + "build": "(tsbuild --web)", + "createGrafana": "docker run --name grafana -d -p 4000:3000 grafana/grafana-oss", + "createClickhouse": "docker run --name some-clickhouse-server --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 --volume=$PWD/.nogit/testdatabase:/var/lib/clickhouse yandex/clickhouse-server" }, "devDependencies": { "@gitzone/tsbuild": "^2.1.25", diff --git a/test/test.ts b/test/test.ts index 5bfb794..8525d2a 100644 --- a/test/test.ts +++ b/test/test.ts @@ -14,6 +14,10 @@ tap.test('should start the clickhouse db', async () => { await testClickhouseDb.start(); }) +tap.test('should create a timedatatable', async () => { + testClickhouseDb.getTable('analytics') +}) + tap.skip.test('should write something to the clickhouse db', async () => { const result2 = await testClickhouseDb.clickhouseClient.queryPromise(`CREATE TABLE IF NOT EXISTS visits2 ( timestamp UInt64, diff --git a/ts/smartclickhouse.classes.timedatatable.ts b/ts/smartclickhouse.classes.timedatatable.ts index f3e8c92..bbe9a83 100644 --- a/ts/smartclickhouse.classes.timedatatable.ts +++ b/ts/smartclickhouse.classes.timedatatable.ts @@ -2,19 +2,28 @@ import * as plugins from './smartclickhouse.plugins'; import { SmartClickHouseDb } from './smartclickhouse.classes.smartclickhouse'; export class TimeDataTable { - public static async getTable(smartClickHouseDbRefArg: SmartClickHouseDb, tableNameArg: string) { + public static async getTable (smartClickHouseDbRefArg: SmartClickHouseDb, tableNameArg: string) { const newTable = new TimeDataTable(smartClickHouseDbRefArg, tableNameArg); // create table in clickhouse - smartClickHouseDbRefArg; + await smartClickHouseDbRefArg.clickhouseClient.queryPromise(`CREATE TABLE IF NOT EXISTS ${newTable.tableName} ( + timestamp DateTime64(3, 'Europe/Berlin'), + message String + ) ENGINE=MergeTree() ORDER BY timestamp`); + return newTable; } // INSTANCE public smartClickHouseDbRef: SmartClickHouseDb; public tableName: string; - - constructor(smartClickHouseDbRefArg: SmartClickHouseDb,tableNameArg: string) { + + constructor(smartClickHouseDbRefArg: SmartClickHouseDb, tableNameArg: string) { this.smartClickHouseDbRef = smartClickHouseDbRefArg; this.tableName = tableNameArg; } + + /** + * stores a json and tries to map it to the nested syntax + */ + public async storeJson () {} } \ No newline at end of file