@quillsql/node 0.7.6 → 0.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/db/CachedConnection.d.ts +3 -8
- package/dist/cjs/db/CachedConnection.js.map +1 -1
- package/dist/cjs/db/ClickHouse.js +124 -124
- package/dist/cjs/db/ClickHouse.js.map +1 -1
- package/dist/cjs/db/DatabaseHelper.d.ts +16 -12
- package/dist/cjs/db/DatabaseHelper.js +20 -0
- package/dist/cjs/db/DatabaseHelper.js.map +1 -1
- package/dist/cjs/db/Databricks.d.ts +29 -0
- package/dist/cjs/db/Databricks.js +210 -0
- package/dist/cjs/db/Databricks.js.map +1 -0
- package/dist/cjs/db/Mssql.d.ts +2 -2
- package/dist/cjs/db/Mssql.js +79 -44
- package/dist/cjs/db/Mssql.js.map +1 -1
- package/dist/cjs/db/Postgres.js +5 -1
- package/dist/cjs/db/Postgres.js.map +1 -1
- package/dist/cjs/index.d.ts +5 -3
- package/dist/cjs/index.js +26 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/models/Filters.js +57 -49
- package/dist/cjs/models/Filters.js.map +1 -1
- package/dist/cjs/utils/tenants.js +6 -2
- package/dist/cjs/utils/tenants.js.map +1 -1
- package/dist/esm/db/CachedConnection.d.ts +3 -8
- package/dist/esm/db/CachedConnection.js.map +1 -1
- package/dist/esm/db/ClickHouse.js +124 -124
- package/dist/esm/db/ClickHouse.js.map +1 -1
- package/dist/esm/db/DatabaseHelper.d.ts +16 -12
- package/dist/esm/db/DatabaseHelper.js +22 -2
- package/dist/esm/db/DatabaseHelper.js.map +1 -1
- package/dist/esm/db/Databricks.d.ts +29 -0
- package/dist/esm/db/Databricks.js +199 -0
- package/dist/esm/db/Databricks.js.map +1 -0
- package/dist/esm/db/Mssql.d.ts +2 -2
- package/dist/esm/db/Mssql.js +80 -45
- package/dist/esm/db/Mssql.js.map +1 -1
- package/dist/esm/db/Postgres.js +5 -1
- package/dist/esm/db/Postgres.js.map +1 -1
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.js +26 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/Filters.js +57 -49
- package/dist/esm/models/Filters.js.map +1 -1
- package/dist/esm/utils/tenants.js +6 -2
- package/dist/esm/utils/tenants.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.connectToDatabricks = connectToDatabricks;
|
|
13
|
+
exports.disconnectFromDatabricks = disconnectFromDatabricks;
|
|
14
|
+
exports.runQueryDatabricks = runQueryDatabricks;
|
|
15
|
+
exports.getSchemasDatabricks = getSchemasDatabricks;
|
|
16
|
+
exports.getTablesBySchemaDatabricks = getTablesBySchemaDatabricks;
|
|
17
|
+
exports.getColumnsByTableDatabricks = getColumnsByTableDatabricks;
|
|
18
|
+
exports.getForeignKeysDatabricks = getForeignKeysDatabricks;
|
|
19
|
+
exports.getSchemaColumnInfoDatabricks = getSchemaColumnInfoDatabricks;
|
|
20
|
+
exports.formatDatabricksConfig = formatDatabricksConfig;
|
|
21
|
+
const sql_1 = require("@databricks/sql");
|
|
22
|
+
const DATABRICKS_DATATYPE_NAME_MAP = {
|
|
23
|
+
// Numeric Types
|
|
24
|
+
BIGINT: 20, // int8
|
|
25
|
+
BINARY: 17, // bytea
|
|
26
|
+
BOOLEAN: 16, // bool
|
|
27
|
+
DATE: 1082, // date
|
|
28
|
+
DECIMAL: 1700, // numeric
|
|
29
|
+
DOUBLE: 701, // float8
|
|
30
|
+
FLOAT: 701, // float8
|
|
31
|
+
INT: 23, // int4
|
|
32
|
+
INTERVAL: 1186, // interval
|
|
33
|
+
VOID: 2278, // void
|
|
34
|
+
SMALLINT: 21, // int2
|
|
35
|
+
STRING: 1043, // varchar
|
|
36
|
+
TIMESTAMP: 1114, // timestamp
|
|
37
|
+
TIMESTAMP_NTZ: 1114, // timestamp without timezone
|
|
38
|
+
TINYINT: 21, // mapped to smallint (int2) as postgres has no tinyint
|
|
39
|
+
// Complex Types - mapping to closest PostgreSQL equivalents
|
|
40
|
+
ARRAY: 2277, // anyarray
|
|
41
|
+
MAP: 3802, // jsonb
|
|
42
|
+
STRUCT: 3802, // jsonb
|
|
43
|
+
VARIANT: 3802, // jsonb
|
|
44
|
+
OBJECT: 3802, // jsonb
|
|
45
|
+
};
|
|
46
|
+
const DATABRICKS_DATATYPE_ID_MAP = {
|
|
47
|
+
// TTypeId.BOOLEAN_TYPE = 0
|
|
48
|
+
0: 16, // bool
|
|
49
|
+
// TTypeId.TINYINT_TYPE = 1
|
|
50
|
+
1: 21, // smallint (postgres has no tinyint)
|
|
51
|
+
// TTypeId.SMALLINT_TYPE = 2
|
|
52
|
+
2: 21, // smallint
|
|
53
|
+
// TTypeId.INT_TYPE = 3
|
|
54
|
+
3: 23, // integer
|
|
55
|
+
// TTypeId.BIGINT_TYPE = 4
|
|
56
|
+
4: 20, // bigint
|
|
57
|
+
// TTypeId.FLOAT_TYPE = 5
|
|
58
|
+
5: 700, // float4/real
|
|
59
|
+
// TTypeId.DOUBLE_TYPE = 6
|
|
60
|
+
6: 701, // float8/double precision
|
|
61
|
+
// TTypeId.STRING_TYPE = 7
|
|
62
|
+
7: 25, // text
|
|
63
|
+
// TTypeId.TIMESTAMP_TYPE = 8
|
|
64
|
+
8: 1114, // timestamp
|
|
65
|
+
// TTypeId.BINARY_TYPE = 9
|
|
66
|
+
9: 17, // bytea
|
|
67
|
+
// TTypeId.ARRAY_TYPE = 10
|
|
68
|
+
10: 2277, // anyarray
|
|
69
|
+
// TTypeId.MAP_TYPE = 11
|
|
70
|
+
11: 3802, // jsonb
|
|
71
|
+
// TTypeId.STRUCT_TYPE = 12
|
|
72
|
+
12: 3802, // jsonb
|
|
73
|
+
// TTypeId.UNION_TYPE = 13
|
|
74
|
+
13: 3802, // jsonb
|
|
75
|
+
// TTypeId.USER_DEFINED_TYPE = 14
|
|
76
|
+
14: 3802, // jsonb
|
|
77
|
+
// TTypeId.DECIMAL_TYPE = 15
|
|
78
|
+
15: 1700, // numeric
|
|
79
|
+
// TTypeId.NULL_TYPE = 16
|
|
80
|
+
16: 1043, // varchar (default for null type)
|
|
81
|
+
// TTypeId.DATE_TYPE = 17
|
|
82
|
+
17: 1082, // date
|
|
83
|
+
// TTypeId.VARCHAR_TYPE = 18
|
|
84
|
+
18: 1043, // varchar
|
|
85
|
+
// TTypeId.CHAR_TYPE = 19
|
|
86
|
+
19: 1042, // char
|
|
87
|
+
// TTypeId.INTERVAL_YEAR_MONTH_TYPE = 20
|
|
88
|
+
20: 1186, // interval
|
|
89
|
+
// TTypeId.INTERVAL_DAY_TIME_TYPE = 21
|
|
90
|
+
21: 1186, // interval
|
|
91
|
+
};
|
|
92
|
+
function connectToDatabricks(config) {
|
|
93
|
+
const client = new sql_1.DBSQLClient();
|
|
94
|
+
client.connect(config);
|
|
95
|
+
return client;
|
|
96
|
+
}
|
|
97
|
+
function disconnectFromDatabricks(client) {
|
|
98
|
+
client.close();
|
|
99
|
+
}
|
|
100
|
+
function runQueryDatabricks(sql, client) {
|
|
101
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
const session = yield client.openSession();
|
|
103
|
+
try {
|
|
104
|
+
const operation = yield session.executeStatement(sql);
|
|
105
|
+
const result = yield operation.fetchAll();
|
|
106
|
+
const schema = yield operation.getSchema();
|
|
107
|
+
if (!schema) {
|
|
108
|
+
throw new Error("Failed to get schema information");
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
fields: schema.columns.map((column) => {
|
|
112
|
+
var _a, _b, _c, _d, _e;
|
|
113
|
+
return ({
|
|
114
|
+
name: column.columnName,
|
|
115
|
+
dataTypeID: DATABRICKS_DATATYPE_ID_MAP[(_e = (_d = (_c = (_b = (_a = column.typeDesc) === null || _a === void 0 ? void 0 : _a.types) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.primitiveEntry) === null || _d === void 0 ? void 0 : _d.type) !== null && _e !== void 0 ? _e : 12] || 1043,
|
|
116
|
+
});
|
|
117
|
+
}),
|
|
118
|
+
rows: result,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
yield session.close();
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function getSchemasDatabricks(client) {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
const sql = `
|
|
129
|
+
SELECT schema_name
|
|
130
|
+
FROM system.information_schema.schemata
|
|
131
|
+
WHERE schema_name != "information_schema"
|
|
132
|
+
`;
|
|
133
|
+
const results = yield runQueryDatabricks(sql, client);
|
|
134
|
+
return results.rows.map((row) => row.databaseName);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function getTablesBySchemaDatabricks(client, schemaNames) {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const allTables = yield Promise.all(schemaNames.map((schema) => __awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
const sql = `SELECT
|
|
141
|
+
table_name as tableName,
|
|
142
|
+
table_schema as schemaName,
|
|
143
|
+
table_catalog as catalogName
|
|
144
|
+
FROM system.information_schema.tables
|
|
145
|
+
WHERE table_schema = '${schema}'`;
|
|
146
|
+
const results = yield runQueryDatabricks(sql, client);
|
|
147
|
+
return results.rows.map((row) => ({
|
|
148
|
+
tableName: row.tableName,
|
|
149
|
+
schemaName: row.schemaName,
|
|
150
|
+
catalogName: row.catalogName,
|
|
151
|
+
}));
|
|
152
|
+
})));
|
|
153
|
+
return allTables.flat();
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
function getColumnsByTableDatabricks(client, schemaName, tableName) {
|
|
157
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
+
const sql = `SELECT
|
|
159
|
+
column_name as columnName
|
|
160
|
+
FROM system.information_schema.columns
|
|
161
|
+
WHERE table_schema = '${schemaName}'
|
|
162
|
+
AND table_name = '${tableName}'
|
|
163
|
+
ORDER BY ordinal_position`;
|
|
164
|
+
const results = yield runQueryDatabricks(sql, client);
|
|
165
|
+
return results.rows.map((row) => row.col_name);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
// NOTE: This function is not used in the current implementation and deprecated since the materialized view update
|
|
169
|
+
function getForeignKeysDatabricks() {
|
|
170
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
171
|
+
// Databricks doesn't have a direct way to get foreign keys
|
|
172
|
+
// We'll return an empty array as this is deprecated
|
|
173
|
+
return [];
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
function getSchemaColumnInfoDatabricks(client, schemaName, tableNames) {
|
|
177
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
178
|
+
const allColumns = yield Promise.all(tableNames.map((table) => __awaiter(this, void 0, void 0, function* () {
|
|
179
|
+
var _a, _b;
|
|
180
|
+
const sql = `SELECT
|
|
181
|
+
column_name as columnName,
|
|
182
|
+
data_type as dataType
|
|
183
|
+
FROM system.information_schema.columns
|
|
184
|
+
WHERE table_schema = '${table.schemaName}'
|
|
185
|
+
AND table_name = '${table.tableName}'
|
|
186
|
+
ORDER BY ordinal_position`;
|
|
187
|
+
const results = yield runQueryDatabricks(sql, client);
|
|
188
|
+
const dataType = (((_b = (_a = results === null || results === void 0 ? void 0 : results.rows) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.dataType) || "").split("<")[0];
|
|
189
|
+
const postgresTypeId = DATABRICKS_DATATYPE_NAME_MAP[dataType] || 1043;
|
|
190
|
+
return {
|
|
191
|
+
tableName: `${table.schemaName}.${table.tableName}`,
|
|
192
|
+
columns: results.rows.map((row) => ({
|
|
193
|
+
columnName: row.columnName,
|
|
194
|
+
displayName: row.columnName,
|
|
195
|
+
fieldType: row.dataType,
|
|
196
|
+
dataTypeID: postgresTypeId,
|
|
197
|
+
})),
|
|
198
|
+
};
|
|
199
|
+
})));
|
|
200
|
+
return allColumns;
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
function formatDatabricksConfig(connectionString) {
|
|
204
|
+
const parsedUrl = new URL(connectionString);
|
|
205
|
+
const host = parsedUrl.hostname;
|
|
206
|
+
const path = parsedUrl.pathname;
|
|
207
|
+
const token = parsedUrl.password;
|
|
208
|
+
return { host, path, token };
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=Databricks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Databricks.js","sourceRoot":"","sources":["../../../src/db/Databricks.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/db/Mssql.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConnectionPool } from
|
|
2
|
-
import { QuillQueryResults } from
|
|
1
|
+
import { ConnectionPool } from "mssql";
|
|
2
|
+
import { QuillQueryResults } from "./DatabaseHelper";
|
|
3
3
|
export interface MssqlConnectionConfig {
|
|
4
4
|
server: string;
|
|
5
5
|
user: string;
|
package/dist/cjs/db/Mssql.js
CHANGED
|
@@ -31,8 +31,8 @@ function formatMssqlConfig(connectionString) {
|
|
|
31
31
|
port: url.port ? parseInt(url.port) : 1433,
|
|
32
32
|
options: {
|
|
33
33
|
encrypt: true,
|
|
34
|
-
trustServerCertificate: true
|
|
35
|
-
}
|
|
34
|
+
trustServerCertificate: true,
|
|
35
|
+
},
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
function connectToMssql(config) {
|
|
@@ -55,9 +55,11 @@ function runQueryMssql(sql, connection) {
|
|
|
55
55
|
// this part isn't some AI hallucination, it's really like that
|
|
56
56
|
const getSqlType = (typeString) => {
|
|
57
57
|
var _a;
|
|
58
|
-
return ((_a = typeString.match(/TYPES\.(\w+)/)) === null || _a === void 0 ? void 0 : _a[1]) ||
|
|
58
|
+
return ((_a = typeString.match(/TYPES\.(\w+)/)) === null || _a === void 0 ? void 0 : _a[1]) || "";
|
|
59
59
|
};
|
|
60
|
-
const typeName = typeof meta.type === "function"
|
|
60
|
+
const typeName = typeof meta.type === "function"
|
|
61
|
+
? getSqlType(meta.type().type.toString())
|
|
62
|
+
: getSqlType(meta.type.type.toString());
|
|
61
63
|
return {
|
|
62
64
|
name,
|
|
63
65
|
dataTypeID: mssqlDataTypeToPostgresOID(typeName),
|
|
@@ -80,7 +82,7 @@ function getSchemasMssql(connection) {
|
|
|
80
82
|
const sql = `SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
|
|
81
83
|
WHERE SCHEMA_NAME != 'INFORMATION_SCHEMA'`;
|
|
82
84
|
const results = yield runQueryMssql(sql, connection);
|
|
83
|
-
return results.rows.map(row => row.SCHEMA_NAME);
|
|
85
|
+
return results.rows.map((row) => row.SCHEMA_NAME);
|
|
84
86
|
});
|
|
85
87
|
}
|
|
86
88
|
function getTablesBySchemaMssql(connection, schemaNames) {
|
|
@@ -94,9 +96,9 @@ function getTablesBySchemaMssql(connection, schemaNames) {
|
|
|
94
96
|
AND TABLE_TYPE = 'BASE TABLE'
|
|
95
97
|
`;
|
|
96
98
|
const results = yield runQueryMssql(sql, connection);
|
|
97
|
-
allTables.push(...results.rows.map(row => ({
|
|
99
|
+
allTables.push(...results.rows.map((row) => ({
|
|
98
100
|
tableName: row.TABLE_NAME,
|
|
99
|
-
schemaName: row.TABLE_SCHEMA
|
|
101
|
+
schemaName: row.TABLE_SCHEMA,
|
|
100
102
|
})));
|
|
101
103
|
}
|
|
102
104
|
return allTables;
|
|
@@ -112,7 +114,7 @@ function getColumnsByTableMssql(connection, schemaName, tableName) {
|
|
|
112
114
|
ORDER BY ORDINAL_POSITION
|
|
113
115
|
`;
|
|
114
116
|
const results = yield runQueryMssql(sql, connection);
|
|
115
|
-
return results.rows.map(row => row.COLUMN_NAME);
|
|
117
|
+
return results.rows.map((row) => row.COLUMN_NAME);
|
|
116
118
|
});
|
|
117
119
|
}
|
|
118
120
|
function getSchemaColumnInfoMssql(connection, schemaName, tableNames) {
|
|
@@ -132,12 +134,12 @@ function getSchemaColumnInfoMssql(connection, schemaName, tableNames) {
|
|
|
132
134
|
return {
|
|
133
135
|
tableName: `${table.schemaName}.${table.tableName}`,
|
|
134
136
|
displayName: `${table.schemaName}.${table.tableName}`,
|
|
135
|
-
columns: results.rows.map(row => ({
|
|
137
|
+
columns: results.rows.map((row) => ({
|
|
136
138
|
columnName: row.columnName,
|
|
137
139
|
displayName: row.columnName,
|
|
138
140
|
dataTypeID: mssqlDataTypeToPostgresOID(row.fieldType),
|
|
139
|
-
fieldType: row.fieldType
|
|
140
|
-
}))
|
|
141
|
+
fieldType: row.fieldType,
|
|
142
|
+
})),
|
|
141
143
|
};
|
|
142
144
|
})));
|
|
143
145
|
return allColumns;
|
|
@@ -146,44 +148,77 @@ function getSchemaColumnInfoMssql(connection, schemaName, tableNames) {
|
|
|
146
148
|
function mssqlDataTypeToPostgresOID(type) {
|
|
147
149
|
switch (type.toLowerCase()) {
|
|
148
150
|
// Numeric Types
|
|
149
|
-
case
|
|
150
|
-
|
|
151
|
-
case
|
|
152
|
-
|
|
153
|
-
case
|
|
154
|
-
|
|
155
|
-
case
|
|
156
|
-
|
|
157
|
-
case
|
|
158
|
-
|
|
159
|
-
case
|
|
151
|
+
case "bigint":
|
|
152
|
+
return 20; // BIGINT
|
|
153
|
+
case "int":
|
|
154
|
+
return 23; // INTEGER
|
|
155
|
+
case "smallint":
|
|
156
|
+
return 21; // SMALLINT
|
|
157
|
+
case "tinyint":
|
|
158
|
+
return 21; // SMALLINT
|
|
159
|
+
case "decimal":
|
|
160
|
+
return 1700; // NUMERIC
|
|
161
|
+
case "numeric":
|
|
162
|
+
return 1700; // NUMERIC
|
|
163
|
+
case "money":
|
|
164
|
+
return 790; // MONEY
|
|
165
|
+
case "smallmoney":
|
|
166
|
+
return 790; // MONEY
|
|
167
|
+
case "float":
|
|
168
|
+
return 701; // DOUBLE PRECISION
|
|
169
|
+
case "real":
|
|
170
|
+
return 700; // REAL
|
|
171
|
+
case "bit":
|
|
172
|
+
return 16; // BOOLEAN
|
|
160
173
|
// Character Types
|
|
161
|
-
case
|
|
162
|
-
|
|
163
|
-
case
|
|
164
|
-
|
|
165
|
-
case
|
|
166
|
-
|
|
174
|
+
case "char":
|
|
175
|
+
return 1042; // CHAR
|
|
176
|
+
case "varchar":
|
|
177
|
+
return 1043; // VARCHAR
|
|
178
|
+
case "text":
|
|
179
|
+
return 25; // TEXT
|
|
180
|
+
case "nchar":
|
|
181
|
+
return 1042; // CHAR
|
|
182
|
+
case "nvarchar":
|
|
183
|
+
return 1043; // VARCHAR
|
|
184
|
+
case "ntext":
|
|
185
|
+
return 25; // TEXT
|
|
167
186
|
// Binary Types
|
|
168
|
-
case
|
|
169
|
-
|
|
170
|
-
case
|
|
187
|
+
case "binary":
|
|
188
|
+
return 17; // BYTEA
|
|
189
|
+
case "varbinary":
|
|
190
|
+
return 17; // BYTEA
|
|
191
|
+
case "image":
|
|
192
|
+
return 17; // BYTEA
|
|
171
193
|
// Date/Time Types
|
|
172
|
-
case
|
|
173
|
-
|
|
174
|
-
case
|
|
175
|
-
|
|
176
|
-
case
|
|
177
|
-
|
|
194
|
+
case "date":
|
|
195
|
+
return 1082; // DATE
|
|
196
|
+
case "datetime":
|
|
197
|
+
return 1114; // TIMESTAMP
|
|
198
|
+
case "datetime2":
|
|
199
|
+
return 1114; // TIMESTAMP
|
|
200
|
+
case "smalldatetime":
|
|
201
|
+
return 1114; // TIMESTAMP
|
|
202
|
+
case "time":
|
|
203
|
+
return 1083; // TIME
|
|
204
|
+
case "datetimeoffset":
|
|
205
|
+
return 1184; // TIMESTAMPTZ
|
|
178
206
|
// Other Types
|
|
179
|
-
case
|
|
180
|
-
|
|
181
|
-
case
|
|
182
|
-
|
|
207
|
+
case "uniqueidentifier":
|
|
208
|
+
return 2950; // UUID
|
|
209
|
+
case "xml":
|
|
210
|
+
return 142; // XML
|
|
211
|
+
case "json":
|
|
212
|
+
return 114; // JSON
|
|
213
|
+
case "sql_variant":
|
|
214
|
+
return 1043; // VARCHAR as fallback
|
|
183
215
|
// Spatial Types
|
|
184
|
-
case
|
|
185
|
-
|
|
186
|
-
|
|
216
|
+
case "geometry":
|
|
217
|
+
return 17; // BYTEA
|
|
218
|
+
case "geography":
|
|
219
|
+
return 17; // BYTEA
|
|
220
|
+
default:
|
|
221
|
+
return 1043; // Default to VARCHAR
|
|
187
222
|
}
|
|
188
223
|
}
|
|
189
224
|
//# sourceMappingURL=Mssql.js.map
|
package/dist/cjs/db/Mssql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mssql.js","sourceRoot":"","sources":["../../../src/db/Mssql.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAoBA,8CAgBC;AACD,wCAEC;AAED,kDAEC;AAED,
|
|
1
|
+
{"version":3,"file":"Mssql.js","sourceRoot":"","sources":["../../../src/db/Mssql.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/db/Postgres.js
CHANGED
|
@@ -26,7 +26,11 @@ pg_1.types.setTypeParser(1114, function (val) {
|
|
|
26
26
|
return val;
|
|
27
27
|
});
|
|
28
28
|
function connectToPostgres(config) {
|
|
29
|
-
|
|
29
|
+
const pool = new pg_1.Pool(config);
|
|
30
|
+
pool.on("error", (err) => {
|
|
31
|
+
console.error("Idle client terminated", err.message);
|
|
32
|
+
});
|
|
33
|
+
return pool;
|
|
30
34
|
}
|
|
31
35
|
function disconnectFromPostgres(pool) {
|
|
32
36
|
pool.end();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Postgres.js","sourceRoot":"","sources":["../../../src/db/Postgres.ts"],"names":[],"mappings":";;;;;;;;;;;AAqBA,
|
|
1
|
+
{"version":3,"file":"Postgres.js","sourceRoot":"","sources":["../../../src/db/Postgres.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CacheCredentials } from "./models/Cache";
|
|
2
2
|
import { QuillQueryParams } from "./models/Quill";
|
|
3
3
|
import "dotenv/config";
|
|
4
|
+
import { DatabaseConnectionConfig, DatabaseConnectionType } from "./db/DatabaseHelper";
|
|
4
5
|
export declare const SINGLE_TENANT = "QUILL_SINGLE_TENANT";
|
|
5
6
|
export declare const ALL_TENANTS = "QUILL_ALL_TENANTS";
|
|
6
7
|
/**
|
|
@@ -21,7 +22,8 @@ export declare enum DatabaseType {
|
|
|
21
22
|
bigquery = "bigquery",
|
|
22
23
|
mysql = "mysql",
|
|
23
24
|
clickhouse = "clickhouse",
|
|
24
|
-
mssql = "mssql"
|
|
25
|
+
mssql = "mssql",
|
|
26
|
+
databricks = "databricks"
|
|
25
27
|
}
|
|
26
28
|
export declare class Quill implements AsyncDisposable {
|
|
27
29
|
private targetConnection;
|
|
@@ -29,9 +31,9 @@ export declare class Quill implements AsyncDisposable {
|
|
|
29
31
|
private config;
|
|
30
32
|
constructor(data: {
|
|
31
33
|
privateKey: string;
|
|
32
|
-
databaseType:
|
|
34
|
+
databaseType: DatabaseConnectionType;
|
|
33
35
|
databaseConnectionString?: string;
|
|
34
|
-
databaseConfig?:
|
|
36
|
+
databaseConfig?: DatabaseConnectionConfig;
|
|
35
37
|
cache?: Partial<CacheCredentials>;
|
|
36
38
|
metadataServerURL?: string;
|
|
37
39
|
});
|
package/dist/cjs/index.js
CHANGED
|
@@ -27,7 +27,13 @@ exports.ALL_TENANTS = "QUILL_ALL_TENANTS";
|
|
|
27
27
|
const HOST = process.env.ENV === "development"
|
|
28
28
|
? "http://localhost:8080"
|
|
29
29
|
: "https://quill-344421.uc.r.appspot.com";
|
|
30
|
-
const FLAG_TASKS = new Set([
|
|
30
|
+
const FLAG_TASKS = new Set([
|
|
31
|
+
"dashboard",
|
|
32
|
+
"report",
|
|
33
|
+
"item",
|
|
34
|
+
"report-info",
|
|
35
|
+
"filter-options",
|
|
36
|
+
]);
|
|
31
37
|
var DatabaseType;
|
|
32
38
|
(function (DatabaseType) {
|
|
33
39
|
DatabaseType["postgresql"] = "postgresql";
|
|
@@ -36,16 +42,23 @@ var DatabaseType;
|
|
|
36
42
|
DatabaseType["mysql"] = "mysql";
|
|
37
43
|
DatabaseType["clickhouse"] = "clickhouse";
|
|
38
44
|
DatabaseType["mssql"] = "mssql";
|
|
45
|
+
DatabaseType["databricks"] = "databricks";
|
|
39
46
|
})(DatabaseType || (exports.DatabaseType = DatabaseType = {}));
|
|
40
47
|
class Quill {
|
|
41
48
|
constructor(data) {
|
|
42
49
|
const { privateKey, databaseType, databaseConnectionString, databaseConfig, cache, metadataServerURL, } = data;
|
|
50
|
+
if (!databaseType || !privateKey) {
|
|
51
|
+
throw new Error("Quill requires a database type and private key.");
|
|
52
|
+
}
|
|
43
53
|
this.baseUrl = metadataServerURL ? metadataServerURL : HOST;
|
|
44
54
|
this.config = { headers: { Authorization: `Bearer ${privateKey}` } };
|
|
45
55
|
let credentials = databaseConfig;
|
|
46
56
|
if (databaseConnectionString) {
|
|
47
57
|
credentials = (0, DatabaseHelper_1.getDatabaseCredentials)(databaseType, databaseConnectionString);
|
|
48
58
|
}
|
|
59
|
+
if (!credentials) {
|
|
60
|
+
throw new Error("Quill requires a database config or connection string.");
|
|
61
|
+
}
|
|
49
62
|
this.targetConnection = new CachedConnection_1.CachedConnection(databaseType, credentials, cache || {});
|
|
50
63
|
}
|
|
51
64
|
query(_a) {
|
|
@@ -70,11 +83,10 @@ class Quill {
|
|
|
70
83
|
// If the task is one that requires flags to be synthesized from the tenants
|
|
71
84
|
if (FLAG_TASKS.has(metadata.task) &&
|
|
72
85
|
(tenants === null || tenants === void 0 ? void 0 : tenants[0]) !== exports.ALL_TENANTS &&
|
|
73
|
-
(tenants === null || tenants === void 0 ? void 0 : tenants[0]) !== exports.SINGLE_TENANT
|
|
74
|
-
|
|
75
|
-
!metadata.reportId)) {
|
|
76
|
-
const response = yield this.postQuill('tenant-mapped-flags', {
|
|
86
|
+
(tenants === null || tenants === void 0 ? void 0 : tenants[0]) !== exports.SINGLE_TENANT) {
|
|
87
|
+
const response = yield this.postQuill("tenant-mapped-flags", {
|
|
77
88
|
reportId: (_b = metadata.reportId) !== null && _b !== void 0 ? _b : metadata.dashboardItemId,
|
|
89
|
+
clientId: metadata.clientId,
|
|
78
90
|
dashboardName: metadata.name,
|
|
79
91
|
tenants,
|
|
80
92
|
flags,
|
|
@@ -94,7 +106,9 @@ class Quill {
|
|
|
94
106
|
}
|
|
95
107
|
else if ((tenants === null || tenants === void 0 ? void 0 : tenants[0]) === exports.SINGLE_TENANT && flags) {
|
|
96
108
|
if (flags.length && typeof flags[0] === "object") {
|
|
97
|
-
tenantFlags = [
|
|
109
|
+
tenantFlags = [
|
|
110
|
+
{ tenantField: exports.SINGLE_TENANT, flags: flags },
|
|
111
|
+
];
|
|
98
112
|
}
|
|
99
113
|
else {
|
|
100
114
|
tenantFlags = flags;
|
|
@@ -209,11 +223,12 @@ class Quill {
|
|
|
209
223
|
try {
|
|
210
224
|
let limitedViewQuery = table.viewQuery;
|
|
211
225
|
if (runQueryConfig.limitBy) {
|
|
212
|
-
limitedViewQuery =
|
|
213
|
-
|
|
214
|
-
? table.viewQuery
|
|
215
|
-
|
|
216
|
-
|
|
226
|
+
limitedViewQuery =
|
|
227
|
+
this.targetConnection.databaseType === "mssql"
|
|
228
|
+
? table.viewQuery.match(/SELECT TOP \d+/i)
|
|
229
|
+
? table.viewQuery
|
|
230
|
+
: table.viewQuery.replace(/select/i, `SELECT TOP ${runQueryConfig.limitBy}`)
|
|
231
|
+
: `${table.viewQuery.replace(/;/, "")} limit ${runQueryConfig.limitBy}`;
|
|
217
232
|
}
|
|
218
233
|
const queryResult = yield this.targetConnection.query(limitedViewQuery);
|
|
219
234
|
const columns = queryResult.fields.map((field) => {
|