@quillsql/node 0.6.5 → 0.6.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/db/Snowflake.js +42 -14
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/models/Quill.d.ts +6 -0
- package/package.json +1 -1
- package/src/db/Snowflake.ts +49 -14
- package/src/index.ts +3 -1
- package/src/models/Quill.ts +7 -0
package/dist/db/Snowflake.js
CHANGED
|
@@ -16,21 +16,49 @@ exports.getSchemaColumnInfoSnowflake = exports.getForeignKeysSnowflake = exports
|
|
|
16
16
|
const snowflake_sdk_1 = __importDefault(require("snowflake-sdk"));
|
|
17
17
|
const textProcessing_1 = require("../utils/textProcessing");
|
|
18
18
|
const POSTGRES_SNOWFLAKE_MAP = {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
19
|
+
// Numeric Types
|
|
20
|
+
NUMBER: 1700, // NUMERIC
|
|
21
|
+
DECIMAL: 1700, // NUMERIC
|
|
22
|
+
NUMERIC: 1700, // NUMERIC
|
|
23
|
+
INT: 23, // INTEGER
|
|
24
|
+
INTEGER: 23, // INTEGER
|
|
25
|
+
BIGINT: 20, // BIGINT
|
|
26
|
+
SMALLINT: 21, // SMALLINT
|
|
27
|
+
TINYINT: 21, // SMALLINT (PostgreSQL doesn't have TINYINT)
|
|
28
|
+
BYTEINT: 21, // SMALLINT (PostgreSQL doesn't have BYTEINT)
|
|
29
|
+
FLOAT: 701, // DOUBLE PRECISION
|
|
30
|
+
FLOAT4: 700, // REAL
|
|
31
|
+
FLOAT8: 701, // DOUBLE PRECISION
|
|
32
|
+
DOUBLE: 701, // DOUBLE PRECISION
|
|
33
|
+
REAL: 700, // REAL
|
|
34
|
+
// Boolean Type
|
|
35
|
+
BOOLEAN: 16, // BOOLEAN
|
|
36
|
+
// String Types
|
|
37
|
+
VARCHAR: 1043, // VARCHAR
|
|
38
|
+
CHAR: 1042, // CHAR
|
|
39
|
+
CHARACTER: 1042, // CHAR
|
|
40
|
+
STRING: 25, // TEXT
|
|
41
|
+
TEXT: 25, // TEXT
|
|
42
|
+
// Binary Types
|
|
33
43
|
BINARY: 17, // BYTEA
|
|
44
|
+
VARBINARY: 17, // BYTEA
|
|
45
|
+
// Date and Time Types
|
|
46
|
+
DATE: 1082, // DATE
|
|
47
|
+
DATETIME: 1184, // TIMESTAMP
|
|
48
|
+
TIME: 1083, // TIME
|
|
49
|
+
TIMESTAMP: 1184, // TIMESTAMP
|
|
50
|
+
TIMESTAMP_LTZ: 1184, // TIMESTAMP WITH TIME ZONE
|
|
51
|
+
TIMESTAMP_NTZ: 1114, // TIMESTAMP WITHOUT TIME ZONE
|
|
52
|
+
TIMESTAMP_TZ: 1184, // TIMESTAMP WITH TIME ZONE
|
|
53
|
+
// Semi-structured Data Types
|
|
54
|
+
VARIANT: 3802, // JSONB
|
|
55
|
+
OBJECT: 3802, // JSONB
|
|
56
|
+
ARRAY: 2277, // JSON[] (closest equivalent)
|
|
57
|
+
// Geospatial Type
|
|
58
|
+
GEOGRAPHY: 25, // TEXT (PostgreSQL doesn't have a direct equivalent)
|
|
59
|
+
GEOMETRY: 25, // TEXT (PostgreSQL doesn't have a direct equivalent)
|
|
60
|
+
// Vector Type
|
|
61
|
+
VECTOR: 3802, // JSONB (closest equivalent without extensions)
|
|
34
62
|
};
|
|
35
63
|
function runQuerySnowflake(sql, connection) {
|
|
36
64
|
return __awaiter(this, void 0, void 0, function* () {
|
package/dist/index.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export declare class Quill implements AsyncDisposable {
|
|
|
32
32
|
cache?: Partial<CacheCredentials>;
|
|
33
33
|
metadataServerURL?: string;
|
|
34
34
|
});
|
|
35
|
-
query({ orgId, metadata, }: QuillQueryParams): Promise<QuillQueryResult>;
|
|
35
|
+
query({ orgId, metadata, filters, }: QuillQueryParams): Promise<QuillQueryResult>;
|
|
36
36
|
private runQueries;
|
|
37
37
|
private postQuill;
|
|
38
38
|
[Symbol.asyncDispose](): Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -40,7 +40,7 @@ class Quill {
|
|
|
40
40
|
}
|
|
41
41
|
this.targetConnection = new CachedConnection_1.CachedConnection(databaseType, credentials, cache || {});
|
|
42
42
|
}
|
|
43
|
-
query({ orgId, metadata, }) {
|
|
43
|
+
query({ orgId, metadata, filters, }) {
|
|
44
44
|
var _a, _b;
|
|
45
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
46
|
this.targetConnection.orgId = orgId;
|
|
@@ -58,7 +58,7 @@ class Quill {
|
|
|
58
58
|
status: "success",
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
|
-
const response = yield this.postQuill(metadata.task, Object.assign(Object.assign(Object.assign({}, metadata), preQueryResults), { orgId, viewQuery: metadata.preQueries ? metadata.preQueries[0] : undefined }));
|
|
61
|
+
const response = yield this.postQuill(metadata.task, Object.assign(Object.assign(Object.assign(Object.assign({}, metadata), { sdkFilters: filters }), preQueryResults), { orgId, viewQuery: metadata.preQueries ? metadata.preQueries[0] : undefined }));
|
|
62
62
|
if (response.error) {
|
|
63
63
|
return {
|
|
64
64
|
status: "error",
|
|
@@ -130,7 +130,7 @@ class Quill {
|
|
|
130
130
|
return Object.assign(Object.assign({}, results), { queryResults: [], mappedArray });
|
|
131
131
|
}
|
|
132
132
|
else if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.getColumns) {
|
|
133
|
-
const queryResult = yield this.targetConnection.query(`${queries[0].replace(/;/, "")} limit
|
|
133
|
+
const queryResult = yield this.targetConnection.query(`${queries[0].replace(/;/, "")} limit 1000`);
|
|
134
134
|
const columns = queryResult.fields.map((field) => {
|
|
135
135
|
return {
|
|
136
136
|
fieldType: (0, schemaConversion_1.convertTypeToPostgres)(field.dataTypeID),
|
package/dist/models/Quill.d.ts
CHANGED
|
@@ -31,6 +31,12 @@ export interface QuillQueryParams {
|
|
|
31
31
|
orgId: string;
|
|
32
32
|
metadata: QuillRequestMetadata;
|
|
33
33
|
environment?: string;
|
|
34
|
+
filters?: QuillFilter[];
|
|
35
|
+
}
|
|
36
|
+
export interface QuillFilter {
|
|
37
|
+
table: string;
|
|
38
|
+
field: string;
|
|
39
|
+
selectedValue: string;
|
|
34
40
|
}
|
|
35
41
|
export interface QuillConfig {
|
|
36
42
|
privateKey: string;
|
package/package.json
CHANGED
package/src/db/Snowflake.ts
CHANGED
|
@@ -3,21 +3,56 @@ import { QuillQueryResults } from "./DatabaseHelper";
|
|
|
3
3
|
import { capitalize, depluralize } from "../utils/textProcessing";
|
|
4
4
|
|
|
5
5
|
const POSTGRES_SNOWFLAKE_MAP: { [type: string]: number } = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
// Numeric Types
|
|
7
|
+
NUMBER: 1700, // NUMERIC
|
|
8
|
+
DECIMAL: 1700, // NUMERIC
|
|
9
|
+
NUMERIC: 1700, // NUMERIC
|
|
10
|
+
INT: 23, // INTEGER
|
|
11
|
+
INTEGER: 23, // INTEGER
|
|
12
|
+
BIGINT: 20, // BIGINT
|
|
13
|
+
SMALLINT: 21, // SMALLINT
|
|
14
|
+
TINYINT: 21, // SMALLINT (PostgreSQL doesn't have TINYINT)
|
|
15
|
+
BYTEINT: 21, // SMALLINT (PostgreSQL doesn't have BYTEINT)
|
|
16
|
+
FLOAT: 701, // DOUBLE PRECISION
|
|
17
|
+
FLOAT4: 700, // REAL
|
|
18
|
+
FLOAT8: 701, // DOUBLE PRECISION
|
|
19
|
+
DOUBLE: 701, // DOUBLE PRECISION
|
|
20
|
+
REAL: 700, // REAL
|
|
21
|
+
|
|
22
|
+
// Boolean Type
|
|
23
|
+
BOOLEAN: 16, // BOOLEAN
|
|
24
|
+
|
|
25
|
+
// String Types
|
|
26
|
+
VARCHAR: 1043, // VARCHAR
|
|
27
|
+
CHAR: 1042, // CHAR
|
|
28
|
+
CHARACTER: 1042, // CHAR
|
|
29
|
+
STRING: 25, // TEXT
|
|
30
|
+
TEXT: 25, // TEXT
|
|
31
|
+
|
|
32
|
+
// Binary Types
|
|
20
33
|
BINARY: 17, // BYTEA
|
|
34
|
+
VARBINARY: 17, // BYTEA
|
|
35
|
+
|
|
36
|
+
// Date and Time Types
|
|
37
|
+
DATE: 1082, // DATE
|
|
38
|
+
DATETIME: 1184, // TIMESTAMP
|
|
39
|
+
TIME: 1083, // TIME
|
|
40
|
+
TIMESTAMP: 1184, // TIMESTAMP
|
|
41
|
+
TIMESTAMP_LTZ: 1184, // TIMESTAMP WITH TIME ZONE
|
|
42
|
+
TIMESTAMP_NTZ: 1114, // TIMESTAMP WITHOUT TIME ZONE
|
|
43
|
+
TIMESTAMP_TZ: 1184, // TIMESTAMP WITH TIME ZONE
|
|
44
|
+
|
|
45
|
+
// Semi-structured Data Types
|
|
46
|
+
VARIANT: 3802, // JSONB
|
|
47
|
+
OBJECT: 3802, // JSONB
|
|
48
|
+
ARRAY: 2277, // JSON[] (closest equivalent)
|
|
49
|
+
|
|
50
|
+
// Geospatial Type
|
|
51
|
+
GEOGRAPHY: 25, // TEXT (PostgreSQL doesn't have a direct equivalent)
|
|
52
|
+
GEOMETRY: 25, // TEXT (PostgreSQL doesn't have a direct equivalent)
|
|
53
|
+
|
|
54
|
+
// Vector Type
|
|
55
|
+
VECTOR: 3802, // JSONB (closest equivalent without extensions)
|
|
21
56
|
};
|
|
22
57
|
|
|
23
58
|
export type SnowflakeConnectionConfig = {
|
package/src/index.ts
CHANGED
|
@@ -90,6 +90,7 @@ export class Quill implements AsyncDisposable {
|
|
|
90
90
|
public async query({
|
|
91
91
|
orgId,
|
|
92
92
|
metadata,
|
|
93
|
+
filters,
|
|
93
94
|
}: QuillQueryParams): Promise<QuillQueryResult> {
|
|
94
95
|
this.targetConnection.orgId = orgId;
|
|
95
96
|
let responseMetadata: any = {};
|
|
@@ -115,6 +116,7 @@ export class Quill implements AsyncDisposable {
|
|
|
115
116
|
}
|
|
116
117
|
const response = await this.postQuill(metadata.task, {
|
|
117
118
|
...metadata,
|
|
119
|
+
sdkFilters: filters,
|
|
118
120
|
...preQueryResults,
|
|
119
121
|
orgId,
|
|
120
122
|
viewQuery: metadata.preQueries ? metadata.preQueries[0] : undefined,
|
|
@@ -200,7 +202,7 @@ export class Quill implements AsyncDisposable {
|
|
|
200
202
|
return { ...results, queryResults: [], mappedArray };
|
|
201
203
|
} else if (runQueryConfig?.getColumns) {
|
|
202
204
|
const queryResult = await this.targetConnection.query(
|
|
203
|
-
`${queries[0].replace(/;/, "")} limit
|
|
205
|
+
`${queries[0].replace(/;/, "")} limit 1000`,
|
|
204
206
|
);
|
|
205
207
|
const columns = queryResult.fields.map((field: any) => {
|
|
206
208
|
return {
|
package/src/models/Quill.ts
CHANGED
|
@@ -33,6 +33,13 @@ export interface QuillQueryParams {
|
|
|
33
33
|
orgId: string;
|
|
34
34
|
metadata: QuillRequestMetadata;
|
|
35
35
|
environment?: string;
|
|
36
|
+
filters?: QuillFilter[];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface QuillFilter {
|
|
40
|
+
table: string;
|
|
41
|
+
field: string;
|
|
42
|
+
selectedValue: string;
|
|
36
43
|
}
|
|
37
44
|
|
|
38
45
|
export interface QuillConfig {
|