@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,199 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { DBSQLClient } from "@databricks/sql";
|
|
11
|
+
const DATABRICKS_DATATYPE_NAME_MAP = {
|
|
12
|
+
// Numeric Types
|
|
13
|
+
BIGINT: 20, // int8
|
|
14
|
+
BINARY: 17, // bytea
|
|
15
|
+
BOOLEAN: 16, // bool
|
|
16
|
+
DATE: 1082, // date
|
|
17
|
+
DECIMAL: 1700, // numeric
|
|
18
|
+
DOUBLE: 701, // float8
|
|
19
|
+
FLOAT: 701, // float8
|
|
20
|
+
INT: 23, // int4
|
|
21
|
+
INTERVAL: 1186, // interval
|
|
22
|
+
VOID: 2278, // void
|
|
23
|
+
SMALLINT: 21, // int2
|
|
24
|
+
STRING: 1043, // varchar
|
|
25
|
+
TIMESTAMP: 1114, // timestamp
|
|
26
|
+
TIMESTAMP_NTZ: 1114, // timestamp without timezone
|
|
27
|
+
TINYINT: 21, // mapped to smallint (int2) as postgres has no tinyint
|
|
28
|
+
// Complex Types - mapping to closest PostgreSQL equivalents
|
|
29
|
+
ARRAY: 2277, // anyarray
|
|
30
|
+
MAP: 3802, // jsonb
|
|
31
|
+
STRUCT: 3802, // jsonb
|
|
32
|
+
VARIANT: 3802, // jsonb
|
|
33
|
+
OBJECT: 3802, // jsonb
|
|
34
|
+
};
|
|
35
|
+
const DATABRICKS_DATATYPE_ID_MAP = {
|
|
36
|
+
// TTypeId.BOOLEAN_TYPE = 0
|
|
37
|
+
0: 16, // bool
|
|
38
|
+
// TTypeId.TINYINT_TYPE = 1
|
|
39
|
+
1: 21, // smallint (postgres has no tinyint)
|
|
40
|
+
// TTypeId.SMALLINT_TYPE = 2
|
|
41
|
+
2: 21, // smallint
|
|
42
|
+
// TTypeId.INT_TYPE = 3
|
|
43
|
+
3: 23, // integer
|
|
44
|
+
// TTypeId.BIGINT_TYPE = 4
|
|
45
|
+
4: 20, // bigint
|
|
46
|
+
// TTypeId.FLOAT_TYPE = 5
|
|
47
|
+
5: 700, // float4/real
|
|
48
|
+
// TTypeId.DOUBLE_TYPE = 6
|
|
49
|
+
6: 701, // float8/double precision
|
|
50
|
+
// TTypeId.STRING_TYPE = 7
|
|
51
|
+
7: 25, // text
|
|
52
|
+
// TTypeId.TIMESTAMP_TYPE = 8
|
|
53
|
+
8: 1114, // timestamp
|
|
54
|
+
// TTypeId.BINARY_TYPE = 9
|
|
55
|
+
9: 17, // bytea
|
|
56
|
+
// TTypeId.ARRAY_TYPE = 10
|
|
57
|
+
10: 2277, // anyarray
|
|
58
|
+
// TTypeId.MAP_TYPE = 11
|
|
59
|
+
11: 3802, // jsonb
|
|
60
|
+
// TTypeId.STRUCT_TYPE = 12
|
|
61
|
+
12: 3802, // jsonb
|
|
62
|
+
// TTypeId.UNION_TYPE = 13
|
|
63
|
+
13: 3802, // jsonb
|
|
64
|
+
// TTypeId.USER_DEFINED_TYPE = 14
|
|
65
|
+
14: 3802, // jsonb
|
|
66
|
+
// TTypeId.DECIMAL_TYPE = 15
|
|
67
|
+
15: 1700, // numeric
|
|
68
|
+
// TTypeId.NULL_TYPE = 16
|
|
69
|
+
16: 1043, // varchar (default for null type)
|
|
70
|
+
// TTypeId.DATE_TYPE = 17
|
|
71
|
+
17: 1082, // date
|
|
72
|
+
// TTypeId.VARCHAR_TYPE = 18
|
|
73
|
+
18: 1043, // varchar
|
|
74
|
+
// TTypeId.CHAR_TYPE = 19
|
|
75
|
+
19: 1042, // char
|
|
76
|
+
// TTypeId.INTERVAL_YEAR_MONTH_TYPE = 20
|
|
77
|
+
20: 1186, // interval
|
|
78
|
+
// TTypeId.INTERVAL_DAY_TIME_TYPE = 21
|
|
79
|
+
21: 1186, // interval
|
|
80
|
+
};
|
|
81
|
+
export function connectToDatabricks(config) {
|
|
82
|
+
const client = new DBSQLClient();
|
|
83
|
+
client.connect(config);
|
|
84
|
+
return client;
|
|
85
|
+
}
|
|
86
|
+
export function disconnectFromDatabricks(client) {
|
|
87
|
+
client.close();
|
|
88
|
+
}
|
|
89
|
+
export function runQueryDatabricks(sql, client) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
const session = yield client.openSession();
|
|
92
|
+
try {
|
|
93
|
+
const operation = yield session.executeStatement(sql);
|
|
94
|
+
const result = yield operation.fetchAll();
|
|
95
|
+
const schema = yield operation.getSchema();
|
|
96
|
+
if (!schema) {
|
|
97
|
+
throw new Error("Failed to get schema information");
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
fields: schema.columns.map((column) => {
|
|
101
|
+
var _a, _b, _c, _d, _e;
|
|
102
|
+
return ({
|
|
103
|
+
name: column.columnName,
|
|
104
|
+
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,
|
|
105
|
+
});
|
|
106
|
+
}),
|
|
107
|
+
rows: result,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
yield session.close();
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
export function getSchemasDatabricks(client) {
|
|
116
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
const sql = `
|
|
118
|
+
SELECT schema_name
|
|
119
|
+
FROM system.information_schema.schemata
|
|
120
|
+
WHERE schema_name != "information_schema"
|
|
121
|
+
`;
|
|
122
|
+
const results = yield runQueryDatabricks(sql, client);
|
|
123
|
+
return results.rows.map((row) => row.databaseName);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
export function getTablesBySchemaDatabricks(client, schemaNames) {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
const allTables = yield Promise.all(schemaNames.map((schema) => __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
const sql = `SELECT
|
|
130
|
+
table_name as tableName,
|
|
131
|
+
table_schema as schemaName,
|
|
132
|
+
table_catalog as catalogName
|
|
133
|
+
FROM system.information_schema.tables
|
|
134
|
+
WHERE table_schema = '${schema}'`;
|
|
135
|
+
const results = yield runQueryDatabricks(sql, client);
|
|
136
|
+
return results.rows.map((row) => ({
|
|
137
|
+
tableName: row.tableName,
|
|
138
|
+
schemaName: row.schemaName,
|
|
139
|
+
catalogName: row.catalogName,
|
|
140
|
+
}));
|
|
141
|
+
})));
|
|
142
|
+
return allTables.flat();
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
export function getColumnsByTableDatabricks(client, schemaName, tableName) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
const sql = `SELECT
|
|
148
|
+
column_name as columnName
|
|
149
|
+
FROM system.information_schema.columns
|
|
150
|
+
WHERE table_schema = '${schemaName}'
|
|
151
|
+
AND table_name = '${tableName}'
|
|
152
|
+
ORDER BY ordinal_position`;
|
|
153
|
+
const results = yield runQueryDatabricks(sql, client);
|
|
154
|
+
return results.rows.map((row) => row.col_name);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
// NOTE: This function is not used in the current implementation and deprecated since the materialized view update
|
|
158
|
+
export function getForeignKeysDatabricks() {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
// Databricks doesn't have a direct way to get foreign keys
|
|
161
|
+
// We'll return an empty array as this is deprecated
|
|
162
|
+
return [];
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
export function getSchemaColumnInfoDatabricks(client, schemaName, tableNames) {
|
|
166
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
167
|
+
const allColumns = yield Promise.all(tableNames.map((table) => __awaiter(this, void 0, void 0, function* () {
|
|
168
|
+
var _a, _b;
|
|
169
|
+
const sql = `SELECT
|
|
170
|
+
column_name as columnName,
|
|
171
|
+
data_type as dataType
|
|
172
|
+
FROM system.information_schema.columns
|
|
173
|
+
WHERE table_schema = '${table.schemaName}'
|
|
174
|
+
AND table_name = '${table.tableName}'
|
|
175
|
+
ORDER BY ordinal_position`;
|
|
176
|
+
const results = yield runQueryDatabricks(sql, client);
|
|
177
|
+
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];
|
|
178
|
+
const postgresTypeId = DATABRICKS_DATATYPE_NAME_MAP[dataType] || 1043;
|
|
179
|
+
return {
|
|
180
|
+
tableName: `${table.schemaName}.${table.tableName}`,
|
|
181
|
+
columns: results.rows.map((row) => ({
|
|
182
|
+
columnName: row.columnName,
|
|
183
|
+
displayName: row.columnName,
|
|
184
|
+
fieldType: row.dataType,
|
|
185
|
+
dataTypeID: postgresTypeId,
|
|
186
|
+
})),
|
|
187
|
+
};
|
|
188
|
+
})));
|
|
189
|
+
return allColumns;
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
export function formatDatabricksConfig(connectionString) {
|
|
193
|
+
const parsedUrl = new URL(connectionString);
|
|
194
|
+
const host = parsedUrl.hostname;
|
|
195
|
+
const path = parsedUrl.pathname;
|
|
196
|
+
const token = parsedUrl.password;
|
|
197
|
+
return { host, path, token };
|
|
198
|
+
}
|
|
199
|
+
//# 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/esm/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/esm/db/Mssql.js
CHANGED
|
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import mssql from
|
|
10
|
+
import mssql from "mssql";
|
|
11
11
|
export function formatMssqlConfig(connectionString) {
|
|
12
12
|
const url = new URL(connectionString);
|
|
13
13
|
return {
|
|
@@ -18,8 +18,8 @@ export function formatMssqlConfig(connectionString) {
|
|
|
18
18
|
port: url.port ? parseInt(url.port) : 1433,
|
|
19
19
|
options: {
|
|
20
20
|
encrypt: true,
|
|
21
|
-
trustServerCertificate: true
|
|
22
|
-
}
|
|
21
|
+
trustServerCertificate: true,
|
|
22
|
+
},
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
export function connectToMssql(config) {
|
|
@@ -42,9 +42,11 @@ export function runQueryMssql(sql, connection) {
|
|
|
42
42
|
// this part isn't some AI hallucination, it's really like that
|
|
43
43
|
const getSqlType = (typeString) => {
|
|
44
44
|
var _a;
|
|
45
|
-
return ((_a = typeString.match(/TYPES\.(\w+)/)) === null || _a === void 0 ? void 0 : _a[1]) ||
|
|
45
|
+
return ((_a = typeString.match(/TYPES\.(\w+)/)) === null || _a === void 0 ? void 0 : _a[1]) || "";
|
|
46
46
|
};
|
|
47
|
-
const typeName = typeof meta.type === "function"
|
|
47
|
+
const typeName = typeof meta.type === "function"
|
|
48
|
+
? getSqlType(meta.type().type.toString())
|
|
49
|
+
: getSqlType(meta.type.type.toString());
|
|
48
50
|
return {
|
|
49
51
|
name,
|
|
50
52
|
dataTypeID: mssqlDataTypeToPostgresOID(typeName),
|
|
@@ -67,7 +69,7 @@ export function getSchemasMssql(connection) {
|
|
|
67
69
|
const sql = `SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
|
|
68
70
|
WHERE SCHEMA_NAME != 'INFORMATION_SCHEMA'`;
|
|
69
71
|
const results = yield runQueryMssql(sql, connection);
|
|
70
|
-
return results.rows.map(row => row.SCHEMA_NAME);
|
|
72
|
+
return results.rows.map((row) => row.SCHEMA_NAME);
|
|
71
73
|
});
|
|
72
74
|
}
|
|
73
75
|
export function getTablesBySchemaMssql(connection, schemaNames) {
|
|
@@ -81,9 +83,9 @@ export function getTablesBySchemaMssql(connection, schemaNames) {
|
|
|
81
83
|
AND TABLE_TYPE = 'BASE TABLE'
|
|
82
84
|
`;
|
|
83
85
|
const results = yield runQueryMssql(sql, connection);
|
|
84
|
-
allTables.push(...results.rows.map(row => ({
|
|
86
|
+
allTables.push(...results.rows.map((row) => ({
|
|
85
87
|
tableName: row.TABLE_NAME,
|
|
86
|
-
schemaName: row.TABLE_SCHEMA
|
|
88
|
+
schemaName: row.TABLE_SCHEMA,
|
|
87
89
|
})));
|
|
88
90
|
}
|
|
89
91
|
return allTables;
|
|
@@ -99,7 +101,7 @@ export function getColumnsByTableMssql(connection, schemaName, tableName) {
|
|
|
99
101
|
ORDER BY ORDINAL_POSITION
|
|
100
102
|
`;
|
|
101
103
|
const results = yield runQueryMssql(sql, connection);
|
|
102
|
-
return results.rows.map(row => row.COLUMN_NAME);
|
|
104
|
+
return results.rows.map((row) => row.COLUMN_NAME);
|
|
103
105
|
});
|
|
104
106
|
}
|
|
105
107
|
export function getSchemaColumnInfoMssql(connection, schemaName, tableNames) {
|
|
@@ -119,12 +121,12 @@ export function getSchemaColumnInfoMssql(connection, schemaName, tableNames) {
|
|
|
119
121
|
return {
|
|
120
122
|
tableName: `${table.schemaName}.${table.tableName}`,
|
|
121
123
|
displayName: `${table.schemaName}.${table.tableName}`,
|
|
122
|
-
columns: results.rows.map(row => ({
|
|
124
|
+
columns: results.rows.map((row) => ({
|
|
123
125
|
columnName: row.columnName,
|
|
124
126
|
displayName: row.columnName,
|
|
125
127
|
dataTypeID: mssqlDataTypeToPostgresOID(row.fieldType),
|
|
126
|
-
fieldType: row.fieldType
|
|
127
|
-
}))
|
|
128
|
+
fieldType: row.fieldType,
|
|
129
|
+
})),
|
|
128
130
|
};
|
|
129
131
|
})));
|
|
130
132
|
return allColumns;
|
|
@@ -133,44 +135,77 @@ export function getSchemaColumnInfoMssql(connection, schemaName, tableNames) {
|
|
|
133
135
|
function mssqlDataTypeToPostgresOID(type) {
|
|
134
136
|
switch (type.toLowerCase()) {
|
|
135
137
|
// Numeric Types
|
|
136
|
-
case
|
|
137
|
-
|
|
138
|
-
case
|
|
139
|
-
|
|
140
|
-
case
|
|
141
|
-
|
|
142
|
-
case
|
|
143
|
-
|
|
144
|
-
case
|
|
145
|
-
|
|
146
|
-
case
|
|
138
|
+
case "bigint":
|
|
139
|
+
return 20; // BIGINT
|
|
140
|
+
case "int":
|
|
141
|
+
return 23; // INTEGER
|
|
142
|
+
case "smallint":
|
|
143
|
+
return 21; // SMALLINT
|
|
144
|
+
case "tinyint":
|
|
145
|
+
return 21; // SMALLINT
|
|
146
|
+
case "decimal":
|
|
147
|
+
return 1700; // NUMERIC
|
|
148
|
+
case "numeric":
|
|
149
|
+
return 1700; // NUMERIC
|
|
150
|
+
case "money":
|
|
151
|
+
return 790; // MONEY
|
|
152
|
+
case "smallmoney":
|
|
153
|
+
return 790; // MONEY
|
|
154
|
+
case "float":
|
|
155
|
+
return 701; // DOUBLE PRECISION
|
|
156
|
+
case "real":
|
|
157
|
+
return 700; // REAL
|
|
158
|
+
case "bit":
|
|
159
|
+
return 16; // BOOLEAN
|
|
147
160
|
// Character Types
|
|
148
|
-
case
|
|
149
|
-
|
|
150
|
-
case
|
|
151
|
-
|
|
152
|
-
case
|
|
153
|
-
|
|
161
|
+
case "char":
|
|
162
|
+
return 1042; // CHAR
|
|
163
|
+
case "varchar":
|
|
164
|
+
return 1043; // VARCHAR
|
|
165
|
+
case "text":
|
|
166
|
+
return 25; // TEXT
|
|
167
|
+
case "nchar":
|
|
168
|
+
return 1042; // CHAR
|
|
169
|
+
case "nvarchar":
|
|
170
|
+
return 1043; // VARCHAR
|
|
171
|
+
case "ntext":
|
|
172
|
+
return 25; // TEXT
|
|
154
173
|
// Binary Types
|
|
155
|
-
case
|
|
156
|
-
|
|
157
|
-
case
|
|
174
|
+
case "binary":
|
|
175
|
+
return 17; // BYTEA
|
|
176
|
+
case "varbinary":
|
|
177
|
+
return 17; // BYTEA
|
|
178
|
+
case "image":
|
|
179
|
+
return 17; // BYTEA
|
|
158
180
|
// Date/Time Types
|
|
159
|
-
case
|
|
160
|
-
|
|
161
|
-
case
|
|
162
|
-
|
|
163
|
-
case
|
|
164
|
-
|
|
181
|
+
case "date":
|
|
182
|
+
return 1082; // DATE
|
|
183
|
+
case "datetime":
|
|
184
|
+
return 1114; // TIMESTAMP
|
|
185
|
+
case "datetime2":
|
|
186
|
+
return 1114; // TIMESTAMP
|
|
187
|
+
case "smalldatetime":
|
|
188
|
+
return 1114; // TIMESTAMP
|
|
189
|
+
case "time":
|
|
190
|
+
return 1083; // TIME
|
|
191
|
+
case "datetimeoffset":
|
|
192
|
+
return 1184; // TIMESTAMPTZ
|
|
165
193
|
// Other Types
|
|
166
|
-
case
|
|
167
|
-
|
|
168
|
-
case
|
|
169
|
-
|
|
194
|
+
case "uniqueidentifier":
|
|
195
|
+
return 2950; // UUID
|
|
196
|
+
case "xml":
|
|
197
|
+
return 142; // XML
|
|
198
|
+
case "json":
|
|
199
|
+
return 114; // JSON
|
|
200
|
+
case "sql_variant":
|
|
201
|
+
return 1043; // VARCHAR as fallback
|
|
170
202
|
// Spatial Types
|
|
171
|
-
case
|
|
172
|
-
|
|
173
|
-
|
|
203
|
+
case "geometry":
|
|
204
|
+
return 17; // BYTEA
|
|
205
|
+
case "geography":
|
|
206
|
+
return 17; // BYTEA
|
|
207
|
+
default:
|
|
208
|
+
return 1043; // Default to VARCHAR
|
|
174
209
|
}
|
|
175
210
|
}
|
|
176
211
|
//# sourceMappingURL=Mssql.js.map
|
package/dist/esm/db/Mssql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mssql.js","sourceRoot":"","sources":["../../../src/db/Mssql.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AAoBvD,MAAM,UAAU,iBAAiB,CAC/B,gBAAwB;IAExB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEtC,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,QAAQ;QACpB,IAAI,EAAE,GAAG,CAAC,QAAQ;QAClB,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1C,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,uBAAuB;QACxD,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QAC1C,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,sBAAsB,EAAE,IAAI;SAC7B;KACF,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,MAA6B;IAC1D,OAAO,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAA0B;IAC5D,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAgB,aAAa,CACjC,GAAW,EACX,UAA0B;;;QAE1B,IAAI,CAAC;YACH,gEAAgE;YAChE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBAC1B,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;YACD,MAAM,MAAM,GAAiB,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAG,CAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,OAAO;gBACtC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"Mssql.js","sourceRoot":"","sources":["../../../src/db/Mssql.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AAoBvD,MAAM,UAAU,iBAAiB,CAC/B,gBAAwB;IAExB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEtC,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,QAAQ;QACpB,IAAI,EAAE,GAAG,CAAC,QAAQ;QAClB,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1C,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,uBAAuB;QACxD,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QAC1C,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,sBAAsB,EAAE,IAAI;SAC7B;KACF,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,MAA6B;IAC1D,OAAO,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAA0B;IAC5D,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAgB,aAAa,CACjC,GAAW,EACX,UAA0B;;;QAE1B,IAAI,CAAC;YACH,gEAAgE;YAChE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBAC1B,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;YACD,MAAM,MAAM,GAAiB,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAG,CAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,OAAO;gBACtC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;oBAC5D,+DAA+D;oBAC/D,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,EAAE;;wBACxC,OAAO,CAAA,MAAA,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,0CAAG,CAAC,CAAC,KAAI,EAAE,CAAC;oBACrD,CAAC,CAAC;oBACF,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU;wBAC7B,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACzC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAE5C,OAAO;wBACL,IAAI;wBACJ,UAAU,EAAE,0BAA0B,CAAC,QAAQ,CAAC;qBACjD,CAAC;gBACJ,CAAC,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAEpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CAAA;AAED,MAAM,UAAgB,eAAe,CACnC,UAA0B;;QAE1B,MAAM,GAAG,GAAG;8CACgC,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CAAA;AAED,MAAM,UAAgB,sBAAsB,CAC1C,UAA0B,EAC1B,WAAqB;;QAErB,MAAM,SAAS,GAAgD,EAAE,CAAC;QAElE,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG;;;8BAGc,MAAM;;KAE/B,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACrD,SAAS,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5B,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,UAAU,EAAE,GAAG,CAAC,YAAY;aAC7B,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CAAA;AAED,MAAM,UAAgB,sBAAsB,CAC1C,UAA0B,EAC1B,UAAkB,EAClB,SAAiB;;QAEjB,MAAM,GAAG,GAAG;;;4BAGc,UAAU;wBACd,SAAS;;GAE9B,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CAAA;AAED,MAAM,UAAgB,wBAAwB,CAC5C,UAA0B,EAC1B,UAAkB,EAClB,UAAuD;;QAOvD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,UAAU,CAAC,GAAG,CAAC,CAAO,KAAK,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG;;;;;;gCAMY,KAAK,CAAC,UAAU;4BACpB,KAAK,CAAC,SAAS;;OAEpC,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAEvD,OAAO;gBACL,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnD,WAAW,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS,EAAE;gBACrD,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAClC,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,WAAW,EAAE,GAAG,CAAC,UAAU;oBAC3B,UAAU,EAAE,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC;oBACrD,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC,CAAA,CAAC,CACH,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC;CAAA;AAED,SAAS,0BAA0B,CAAC,IAAY;IAC9C,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3B,gBAAgB;QAChB,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,CAAC,SAAS;QACtB,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,CAAC,UAAU;QACvB,KAAK,UAAU;YACb,OAAO,EAAE,CAAC,CAAC,WAAW;QACxB,KAAK,SAAS;YACZ,OAAO,EAAE,CAAC,CAAC,WAAW;QACxB,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,CAAC,UAAU;QACzB,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,CAAC,UAAU;QACzB,KAAK,OAAO;YACV,OAAO,GAAG,CAAC,CAAC,QAAQ;QACtB,KAAK,YAAY;YACf,OAAO,GAAG,CAAC,CAAC,QAAQ;QACtB,KAAK,OAAO;YACV,OAAO,GAAG,CAAC,CAAC,mBAAmB;QACjC,KAAK,MAAM;YACT,OAAO,GAAG,CAAC,CAAC,OAAO;QACrB,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,CAAC,UAAU;QAEvB,kBAAkB;QAClB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,CAAC,OAAO;QACtB,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,CAAC,UAAU;QACzB,KAAK,MAAM;YACT,OAAO,EAAE,CAAC,CAAC,OAAO;QACpB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,CAAC,OAAO;QACtB,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,CAAC,UAAU;QACzB,KAAK,OAAO;YACV,OAAO,EAAE,CAAC,CAAC,OAAO;QAEpB,eAAe;QACf,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,CAAC,QAAQ;QACrB,KAAK,WAAW;YACd,OAAO,EAAE,CAAC,CAAC,QAAQ;QACrB,KAAK,OAAO;YACV,OAAO,EAAE,CAAC,CAAC,QAAQ;QAErB,kBAAkB;QAClB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,CAAC,OAAO;QACtB,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,CAAC,YAAY;QAC3B,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,CAAC,YAAY;QAC3B,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC,CAAC,YAAY;QAC3B,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,CAAC,OAAO;QACtB,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC,CAAC,cAAc;QAE7B,cAAc;QACd,KAAK,kBAAkB;YACrB,OAAO,IAAI,CAAC,CAAC,OAAO;QACtB,KAAK,KAAK;YACR,OAAO,GAAG,CAAC,CAAC,MAAM;QACpB,KAAK,MAAM;YACT,OAAO,GAAG,CAAC,CAAC,OAAO;QACrB,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,CAAC,sBAAsB;QAErC,gBAAgB;QAChB,KAAK,UAAU;YACb,OAAO,EAAE,CAAC,CAAC,QAAQ;QACrB,KAAK,WAAW;YACd,OAAO,EAAE,CAAC,CAAC,QAAQ;QAErB;YACE,OAAO,IAAI,CAAC,CAAC,qBAAqB;IACtC,CAAC;AACH,CAAC"}
|
package/dist/esm/db/Postgres.js
CHANGED
|
@@ -15,7 +15,11 @@ types.setTypeParser(1114, function (val) {
|
|
|
15
15
|
return val;
|
|
16
16
|
});
|
|
17
17
|
export function connectToPostgres(config) {
|
|
18
|
-
|
|
18
|
+
const pool = new Pool(config);
|
|
19
|
+
pool.on("error", (err) => {
|
|
20
|
+
console.error("Idle client terminated", err.message);
|
|
21
|
+
});
|
|
22
|
+
return pool;
|
|
19
23
|
}
|
|
20
24
|
export function disconnectFromPostgres(pool) {
|
|
21
25
|
pool.end();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Postgres.js","sourceRoot":"","sources":["../../../src/db/Postgres.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,gGAAgG;AAChG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG;IACrC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC;AAYH,MAAM,UAAU,iBAAiB,CAAC,MAAgC;IAChE,
|
|
1
|
+
{"version":3,"file":"Postgres.js","sourceRoot":"","sources":["../../../src/db/Postgres.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/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/esm/index.js
CHANGED
|
@@ -21,7 +21,13 @@ export const ALL_TENANTS = "QUILL_ALL_TENANTS";
|
|
|
21
21
|
const HOST = process.env.ENV === "development"
|
|
22
22
|
? "http://localhost:8080"
|
|
23
23
|
: "https://quill-344421.uc.r.appspot.com";
|
|
24
|
-
const FLAG_TASKS = new Set([
|
|
24
|
+
const FLAG_TASKS = new Set([
|
|
25
|
+
"dashboard",
|
|
26
|
+
"report",
|
|
27
|
+
"item",
|
|
28
|
+
"report-info",
|
|
29
|
+
"filter-options",
|
|
30
|
+
]);
|
|
25
31
|
export var DatabaseType;
|
|
26
32
|
(function (DatabaseType) {
|
|
27
33
|
DatabaseType["postgresql"] = "postgresql";
|
|
@@ -30,16 +36,23 @@ export var DatabaseType;
|
|
|
30
36
|
DatabaseType["mysql"] = "mysql";
|
|
31
37
|
DatabaseType["clickhouse"] = "clickhouse";
|
|
32
38
|
DatabaseType["mssql"] = "mssql";
|
|
39
|
+
DatabaseType["databricks"] = "databricks";
|
|
33
40
|
})(DatabaseType || (DatabaseType = {}));
|
|
34
41
|
export class Quill {
|
|
35
42
|
constructor(data) {
|
|
36
43
|
const { privateKey, databaseType, databaseConnectionString, databaseConfig, cache, metadataServerURL, } = data;
|
|
44
|
+
if (!databaseType || !privateKey) {
|
|
45
|
+
throw new Error("Quill requires a database type and private key.");
|
|
46
|
+
}
|
|
37
47
|
this.baseUrl = metadataServerURL ? metadataServerURL : HOST;
|
|
38
48
|
this.config = { headers: { Authorization: `Bearer ${privateKey}` } };
|
|
39
49
|
let credentials = databaseConfig;
|
|
40
50
|
if (databaseConnectionString) {
|
|
41
51
|
credentials = getDatabaseCredentials(databaseType, databaseConnectionString);
|
|
42
52
|
}
|
|
53
|
+
if (!credentials) {
|
|
54
|
+
throw new Error("Quill requires a database config or connection string.");
|
|
55
|
+
}
|
|
43
56
|
this.targetConnection = new CachedConnection(databaseType, credentials, cache || {});
|
|
44
57
|
}
|
|
45
58
|
query(_a) {
|
|
@@ -64,11 +77,10 @@ export class Quill {
|
|
|
64
77
|
// If the task is one that requires flags to be synthesized from the tenants
|
|
65
78
|
if (FLAG_TASKS.has(metadata.task) &&
|
|
66
79
|
(tenants === null || tenants === void 0 ? void 0 : tenants[0]) !== ALL_TENANTS &&
|
|
67
|
-
(tenants === null || tenants === void 0 ? void 0 : tenants[0]) !== SINGLE_TENANT
|
|
68
|
-
|
|
69
|
-
!metadata.reportId)) {
|
|
70
|
-
const response = yield this.postQuill('tenant-mapped-flags', {
|
|
80
|
+
(tenants === null || tenants === void 0 ? void 0 : tenants[0]) !== SINGLE_TENANT) {
|
|
81
|
+
const response = yield this.postQuill("tenant-mapped-flags", {
|
|
71
82
|
reportId: (_b = metadata.reportId) !== null && _b !== void 0 ? _b : metadata.dashboardItemId,
|
|
83
|
+
clientId: metadata.clientId,
|
|
72
84
|
dashboardName: metadata.name,
|
|
73
85
|
tenants,
|
|
74
86
|
flags,
|
|
@@ -88,7 +100,9 @@ export class Quill {
|
|
|
88
100
|
}
|
|
89
101
|
else if ((tenants === null || tenants === void 0 ? void 0 : tenants[0]) === SINGLE_TENANT && flags) {
|
|
90
102
|
if (flags.length && typeof flags[0] === "object") {
|
|
91
|
-
tenantFlags = [
|
|
103
|
+
tenantFlags = [
|
|
104
|
+
{ tenantField: SINGLE_TENANT, flags: flags },
|
|
105
|
+
];
|
|
92
106
|
}
|
|
93
107
|
else {
|
|
94
108
|
tenantFlags = flags;
|
|
@@ -203,11 +217,12 @@ export class Quill {
|
|
|
203
217
|
try {
|
|
204
218
|
let limitedViewQuery = table.viewQuery;
|
|
205
219
|
if (runQueryConfig.limitBy) {
|
|
206
|
-
limitedViewQuery =
|
|
207
|
-
|
|
208
|
-
? table.viewQuery
|
|
209
|
-
|
|
210
|
-
|
|
220
|
+
limitedViewQuery =
|
|
221
|
+
this.targetConnection.databaseType === "mssql"
|
|
222
|
+
? table.viewQuery.match(/SELECT TOP \d+/i)
|
|
223
|
+
? table.viewQuery
|
|
224
|
+
: table.viewQuery.replace(/select/i, `SELECT TOP ${runQueryConfig.limitBy}`)
|
|
225
|
+
: `${table.viewQuery.replace(/;/, "")} limit ${runQueryConfig.limitBy}`;
|
|
211
226
|
}
|
|
212
227
|
const queryResult = yield this.targetConnection.query(limitedViewQuery);
|
|
213
228
|
const columns = queryResult.fields.map((field) => {
|