Skip to content

Commit c872c72

Browse files
committed
define types for TablesSchema query results
1 parent 07670df commit c872c72

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

packages/cubejs-base-driver/src/BaseDriver.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import {
5050
QueryTablesResult,
5151
QueryColumnsResult,
5252
TableMemoryData,
53+
TablesSchema,
5354
PrimaryKeysQueryResult,
5455
ForeignKeysQueryResult,
5556
} from './driver.interface';
@@ -409,28 +410,28 @@ export abstract class BaseDriver implements DriverInterface {
409410
return false;
410411
}
411412

412-
protected informationColumnsSchemaReducer(result: any, i: any) {
413+
protected informationColumnsSchemaReducer(result: any, i: any): TablesSchema {
413414
let schema = (result[i.table_schema] || {});
414-
const tables = (schema[i.table_name] || []);
415+
const columns = (schema[i.table_name] || []);
415416

416-
tables.push({
417+
columns.push({
417418
name: i.column_name,
418419
type: i.data_type,
419420
attributes: i.key_type ? ['primaryKey'] : []
420421
});
421422

422-
tables.sort();
423-
schema[i.table_name] = tables;
423+
columns.sort();
424+
schema[i.table_name] = columns;
424425
schema = sortByKeys(schema);
425426
result[i.table_schema] = schema;
426427

427428
return sortByKeys(result);
428429
}
429430

430-
public tablesSchema(): Promise<any> {
431+
public tablesSchema(): Promise<TablesSchema> {
431432
const query = this.informationSchemaQuery();
432433

433-
return this.query(query, []).then(data => data.reduce(this.informationColumnsSchemaReducer, {}));
434+
return this.query(query, []).then(data => data.reduce<TablesSchema>(this.informationColumnsSchemaReducer, {}));
434435
}
435436

436437
// Extended version of tablesSchema containing primary and foreign keys

packages/cubejs-base-driver/src/driver.interface.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,10 @@ export type QueryTablesResult = { schema_name: string, table_name: string };
192192
// eslint-disable-next-line camelcase
193193
export type QueryColumnsResult = { schema_name: string, table_name: string } & TableColumnQueryResult;
194194

195+
export type SchemaTableColumn = { name: string, type: string, attributes: string[] };
196+
197+
export type TablesSchema = Record<string, Record<string, SchemaTableColumn[]>>;
198+
195199
export type PrimaryKeysQueryResult = {
196200
// eslint-disable-next-line camelcase
197201
table_schema: string

0 commit comments

Comments
 (0)