11/* eslint-disable */
2+ // @ts -ignore
23import ClickHouse from '@cubejs-backend/apla-clickhouse' ;
34import { GenericContainer } from 'testcontainers' ;
5+ import type { StartedTestContainer } from 'testcontainers' ;
46import { format as formatSql } from 'sqlstring' ;
57import { v4 as uuidv4 } from 'uuid' ;
68import { ClickHouseQuery } from '../../../src/adapter/ClickHouseQuery' ;
79import { BaseDbRunner } from "../utils/BaseDbRunner" ;
810
11+ // Just a placeholder for now
12+ type ClickHouseClient = any ;
13+
914process . env . TZ = 'GMT' ;
1015
1116export class ClickHouseDbRunner extends BaseDbRunner {
12- adapter = 'clickhouse' ;
13- container = null ;
14- clickHouseVersion = process . env . TEST_CLICKHOUSE_VERSION || '23.11' ;
15- supportsExtendedDateTimeResults = this . clickHouseVersion >= '22.9' ;
16- allowExperimentalJoinCondition = this . clickHouseVersion >= '24.5' ;
17+ public adapter : string = 'clickhouse' ;
18+
19+ protected container : StartedTestContainer | null = null ;
20+
21+ protected clickHouseVersion : string = process . env . TEST_CLICKHOUSE_VERSION || '23.11' ;
22+
23+ public supportsExtendedDateTimeResults : boolean = this . clickHouseVersion >= '22.9' ;
1724
18- tearDown = async ( ) => {
25+ protected allowExperimentalJoinCondition : boolean = this . clickHouseVersion >= '24.5' ;
26+
27+ public override async tearDown ( ) : Promise < void > {
1928 if ( this . container ) {
2029 await this . container . stop ( ) ;
2130 this . container = null ;
2231 }
2332 }
2433
25- gutterDataSet = async function ( clickHouse ) {
34+ protected async gutterDataSet ( clickHouse : ClickHouseClient ) : Promise < void > {
2635 // let engine = 'MergeTree PARTITION BY id ORDER BY (id) SETTINGS index_granularity = 8192'
2736 const engine = 'Memory' ;
2837
@@ -100,9 +109,9 @@ export class ClickHouseDbRunner extends BaseDbRunner {
100109 (40), (41), (42), (43), (44), (45), (46), (47), (48), (49),
101110 (50), (51), (52), (53), (54), (55), (56), (57), (58), (59)
102111 ` , { queryOptions : { session_id : clickHouse . sessionId , join_use_nulls : '1' } } ) ;
103- } ;
112+ }
104113
105- testQueries = async ( queries , prepareDataSet ) => {
114+ public override async testQueries ( queries : Array < [ string , Array < unknown > ] > , prepareDataSet ?: ( ( client : ClickHouseClient ) => Promise < void > ) | null ) : Promise < Array < Array < Record < string , unknown > > > > {
106115 let host ;
107116 let port ;
108117 if ( process . env . TEST_CLICKHOUSE_HOST ) {
@@ -128,7 +137,7 @@ export class ClickHouseDbRunner extends BaseDbRunner {
128137 prepareDataSet = prepareDataSet || this . gutterDataSet ;
129138 await prepareDataSet ( clickHouse ) ;
130139
131- const requests = [ ] ;
140+ const requests : Array < unknown > = [ ] ;
132141
133142 // Controls whether functions return results with extended date and time ranges.
134143 //
@@ -158,16 +167,18 @@ export class ClickHouseDbRunner extends BaseDbRunner {
158167 const results = await Promise . all ( requests ) ;
159168
160169 return results . map ( _normaliseResponse ) ;
161- } ;
170+ }
162171
163- testQuery = async ( queryAndParams , prepareDataSet ) => this . testQueries ( [ queryAndParams ] , prepareDataSet )
164- . then ( res => res [ 0 ] ) ;
172+ public async testQuery ( queryAndParams : [ string , Array < unknown > ] , prepareDataSet ?: ( ( client : ClickHouseClient ) => Promise < void > ) | null ) : Promise < Array < Record < string , unknown > > > {
173+ const res = await this . testQueries ( [ queryAndParams ] , prepareDataSet ) ;
174+ return res [ 0 ] ;
175+ }
165176
166- port ( ) {
177+ public override port ( ) : number {
167178 return 8123 ;
168179 }
169180
170- newTestQuery ( compilers , query ) {
181+ protected override newTestQuery ( compilers : unknown , query : unknown ) : ClickHouseQuery {
171182 return new ClickHouseQuery ( compilers , query ) ;
172183 }
173184}
@@ -179,7 +190,7 @@ export class ClickHouseDbRunner extends BaseDbRunner {
179190//
180191// https://github.com/statsbotco/cube.js/pull/98#discussion_r279698399
181192//
182- function _normaliseResponse ( res ) {
193+ function _normaliseResponse ( res : any ) : Array < Record < string , unknown > > {
183194 if ( process . env . DEBUG_LOG === 'true' ) console . log ( res ) ;
184195 if ( res . data ) {
185196 res . data . forEach ( row => {
0 commit comments