Skip to content

Commit 19a74e9

Browse files
committed
[FIXUP] stricter types around config
1 parent 9067ce9 commit 19a74e9

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

packages/cubejs-clickhouse-driver/src/ClickHouseDriver.ts

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export interface ClickHouseDriverOptions {
6969
database?: string,
7070
readOnly?: boolean,
7171
// TODO how to treat this in a BC way?
72-
queryOptions?: object,
72+
// queryOptions?: object,
7373

7474
/**
7575
* Data source name.
@@ -95,13 +95,25 @@ interface ClickhouseDriverExportRequiredAWS {
9595
}
9696

9797
interface ClickhouseDriverExportKeySecretAWS extends ClickhouseDriverExportRequiredAWS {
98-
keyId?: string,
99-
secretKey?: string,
98+
keyId: string,
99+
secretKey: string,
100100
}
101101

102102
interface ClickhouseDriverExportAWS extends ClickhouseDriverExportKeySecretAWS {
103103
}
104104

105+
type ClickHouseDriverConfig = {
106+
url: string,
107+
username: string,
108+
password: string,
109+
readOnly: boolean,
110+
// TODO why separate object?
111+
queryOptions: {
112+
database: string,
113+
},
114+
exportBucket: ClickhouseDriverExportAWS | null,
115+
};
116+
105117
export class ClickHouseDriver extends BaseDriver implements DriverInterface {
106118
/**
107119
* Returns default concurrency value.
@@ -116,7 +128,7 @@ export class ClickHouseDriver extends BaseDriver implements DriverInterface {
116128

117129
protected readonly readOnlyMode: boolean;
118130

119-
protected readonly config: any;
131+
protected readonly config: ClickHouseDriverConfig;
120132

121133
/**
122134
* Class constructor.
@@ -146,6 +158,9 @@ export class ClickHouseDriver extends BaseDriver implements DriverInterface {
146158

147159
const username = getEnv('dbUser', { dataSource });
148160
const password = getEnv('dbPass', { dataSource });
161+
const database = (getEnv('dbName', { dataSource }) as string) ||
162+
config && config.database ||
163+
'default';
149164
this.config = {
150165
// host: getEnv('dbHost', { dataSource }),
151166
// port: getEnv('dbPort', { dataSource }),
@@ -163,12 +178,10 @@ export class ClickHouseDriver extends BaseDriver implements DriverInterface {
163178
password,
164179
// protocol: getEnv('dbSsl', { dataSource }) ? 'https:' : 'http:',
165180
queryOptions: {
166-
database:
167-
getEnv('dbName', { dataSource }) ||
168-
config && config.database ||
169-
'default'
181+
database,
170182
},
171183
exportBucket: this.getExportBucket(dataSource),
184+
readOnly: !!config.readOnly,
172185
...config
173186
};
174187

@@ -581,7 +594,7 @@ export class ClickHouseDriver extends BaseDriver implements DriverInterface {
581594

582595
protected getExportBucket(
583596
dataSource: string,
584-
): ClickhouseDriverExportAWS | undefined {
597+
): ClickhouseDriverExportAWS | null {
585598
const supportedBucketTypes = ['s3'];
586599

587600
const requiredExportBucket: ClickhouseDriverExportRequiredAWS = {
@@ -593,7 +606,7 @@ export class ClickHouseDriver extends BaseDriver implements DriverInterface {
593606
region: getEnv('dbExportBucketAwsRegion', { dataSource }),
594607
};
595608

596-
const exportBucket: Partial<ClickhouseDriverExportAWS> = {
609+
const exportBucket: ClickhouseDriverExportAWS = {
597610
...requiredExportBucket,
598611
keyId: getEnv('dbExportBucketAwsKey', { dataSource }),
599612
secretKey: getEnv('dbExportBucketAwsSecret', { dataSource }),
@@ -615,10 +628,10 @@ export class ClickHouseDriver extends BaseDriver implements DriverInterface {
615628
);
616629
}
617630

618-
return exportBucket as ClickhouseDriverExportAWS;
631+
return exportBucket;
619632
}
620633

621-
return undefined;
634+
return null;
622635
}
623636

624637
public async isUnloadSupported() {

0 commit comments

Comments
 (0)