@quillsql/node 0.6.8 → 0.6.9

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.
Files changed (150) hide show
  1. package/dist/{assets → cjs/assets}/pgtypes.js +1 -0
  2. package/dist/cjs/assets/pgtypes.js.map +1 -0
  3. package/dist/{clients → cjs/clients}/QuillServerClient.js +1 -0
  4. package/dist/cjs/clients/QuillServerClient.js.map +1 -0
  5. package/dist/{db → cjs/db}/BigQuery.js +1 -0
  6. package/dist/cjs/db/BigQuery.js.map +1 -0
  7. package/dist/{db → cjs/db}/CachedConnection.js +1 -0
  8. package/dist/cjs/db/CachedConnection.js.map +1 -0
  9. package/dist/{db → cjs/db}/DatabaseHelper.js +1 -0
  10. package/dist/cjs/db/DatabaseHelper.js.map +1 -0
  11. package/dist/{db → cjs/db}/Mysql.js +1 -0
  12. package/dist/cjs/db/Mysql.js.map +1 -0
  13. package/dist/{db → cjs/db}/Postgres.js +1 -0
  14. package/dist/cjs/db/Postgres.js.map +1 -0
  15. package/dist/{db → cjs/db}/Snowflake.js +1 -0
  16. package/dist/cjs/db/Snowflake.js.map +1 -0
  17. package/dist/{index.ispec.js → cjs/index.ispec.js} +1 -0
  18. package/dist/cjs/index.ispec.js.map +1 -0
  19. package/dist/{index.js → cjs/index.js} +2 -0
  20. package/dist/cjs/index.js.map +1 -0
  21. package/dist/{index.uspec.js → cjs/index.uspec.js} +1 -0
  22. package/dist/cjs/index.uspec.js.map +1 -0
  23. package/dist/{models → cjs/models}/Cache.js +1 -0
  24. package/dist/cjs/models/Cache.js.map +1 -0
  25. package/dist/{models → cjs/models}/Client.js +1 -0
  26. package/dist/cjs/models/Client.js.map +1 -0
  27. package/dist/{models → cjs/models}/Database.js +1 -0
  28. package/dist/cjs/models/Database.js.map +1 -0
  29. package/dist/cjs/models/Filters.d.ts +117 -0
  30. package/dist/cjs/models/Filters.js +100 -0
  31. package/dist/cjs/models/Filters.js.map +1 -0
  32. package/dist/{models → cjs/models}/Formats.js +1 -0
  33. package/dist/cjs/models/Formats.js.map +1 -0
  34. package/dist/{models → cjs/models}/Quill.d.ts +2 -6
  35. package/dist/{models → cjs/models}/Quill.js +1 -0
  36. package/dist/cjs/models/Quill.js.map +1 -0
  37. package/dist/{utils → cjs/utils}/Error.js +1 -0
  38. package/dist/cjs/utils/Error.js.map +1 -0
  39. package/dist/{utils → cjs/utils}/RunQueryProcesses.js +1 -0
  40. package/dist/cjs/utils/RunQueryProcesses.js.map +1 -0
  41. package/dist/{utils → cjs/utils}/schemaConversion.js +1 -0
  42. package/dist/cjs/utils/schemaConversion.js.map +1 -0
  43. package/dist/{utils → cjs/utils}/textProcessing.js +1 -0
  44. package/dist/cjs/utils/textProcessing.js.map +1 -0
  45. package/dist/esm/assets/pgtypes.d.ts +4 -0
  46. package/dist/esm/assets/pgtypes.js +2783 -0
  47. package/dist/esm/assets/pgtypes.js.map +1 -0
  48. package/dist/esm/clients/QuillServerClient.d.ts +8 -0
  49. package/dist/esm/clients/QuillServerClient.js +24 -0
  50. package/dist/esm/clients/QuillServerClient.js.map +1 -0
  51. package/dist/esm/db/BigQuery.d.ts +27 -0
  52. package/dist/esm/db/BigQuery.js +201 -0
  53. package/dist/esm/db/BigQuery.js.map +1 -0
  54. package/dist/esm/db/CachedConnection.d.ts +23 -0
  55. package/dist/esm/db/CachedConnection.js +80 -0
  56. package/dist/esm/db/CachedConnection.js.map +1 -0
  57. package/dist/esm/db/DatabaseHelper.d.ts +50 -0
  58. package/dist/esm/db/DatabaseHelper.js +188 -0
  59. package/dist/esm/db/DatabaseHelper.js.map +1 -0
  60. package/dist/esm/db/Mysql.d.ts +30 -0
  61. package/dist/esm/db/Mysql.js +219 -0
  62. package/dist/esm/db/Mysql.js.map +1 -0
  63. package/dist/esm/db/Postgres.d.ts +32 -0
  64. package/dist/esm/db/Postgres.js +157 -0
  65. package/dist/esm/db/Postgres.js.map +1 -0
  66. package/dist/esm/db/Snowflake.d.ts +33 -0
  67. package/dist/esm/db/Snowflake.js +203 -0
  68. package/dist/esm/db/Snowflake.js.map +1 -0
  69. package/dist/esm/index.d.ts +41 -0
  70. package/dist/esm/index.ispec.d.ts +0 -0
  71. package/{src/index.ispec.ts → dist/esm/index.ispec.js} +2 -6
  72. package/dist/esm/index.ispec.js.map +1 -0
  73. package/dist/esm/index.js +266 -0
  74. package/dist/esm/index.js.map +1 -0
  75. package/dist/esm/index.uspec.d.ts +0 -0
  76. package/{src/index.uspec.ts → dist/esm/index.uspec.js} +2 -6
  77. package/dist/esm/index.uspec.js.map +1 -0
  78. package/dist/esm/models/Cache.d.ts +12 -0
  79. package/dist/esm/models/Cache.js +2 -0
  80. package/dist/esm/models/Cache.js.map +1 -0
  81. package/dist/esm/models/Client.d.ts +29 -0
  82. package/dist/esm/models/Client.js +2 -0
  83. package/dist/esm/models/Client.js.map +1 -0
  84. package/dist/esm/models/Database.d.ts +5 -0
  85. package/dist/esm/models/Database.js +2 -0
  86. package/dist/esm/models/Database.js.map +1 -0
  87. package/dist/esm/models/Filters.d.ts +117 -0
  88. package/dist/esm/models/Filters.js +97 -0
  89. package/dist/esm/models/Filters.js.map +1 -0
  90. package/dist/esm/models/Formats.d.ts +7 -0
  91. package/dist/esm/models/Formats.js +2 -0
  92. package/dist/esm/models/Formats.js.map +1 -0
  93. package/dist/esm/models/Quill.d.ts +73 -0
  94. package/dist/esm/models/Quill.js +2 -0
  95. package/dist/esm/models/Quill.js.map +1 -0
  96. package/dist/esm/utils/Error.d.ts +8 -0
  97. package/dist/esm/utils/Error.js +23 -0
  98. package/dist/esm/utils/Error.js.map +1 -0
  99. package/dist/esm/utils/RunQueryProcesses.d.ts +9 -0
  100. package/dist/esm/utils/RunQueryProcesses.js +30 -0
  101. package/dist/esm/utils/RunQueryProcesses.js.map +1 -0
  102. package/dist/esm/utils/schemaConversion.d.ts +1 -0
  103. package/dist/esm/utils/schemaConversion.js +12 -0
  104. package/dist/esm/utils/schemaConversion.js.map +1 -0
  105. package/dist/esm/utils/textProcessing.d.ts +2 -0
  106. package/dist/esm/utils/textProcessing.js +13 -0
  107. package/dist/esm/utils/textProcessing.js.map +1 -0
  108. package/package.json +11 -6
  109. package/eslint.config.mjs +0 -16
  110. package/examples/mysql-node/app.ts +0 -61
  111. package/examples/node-server/app.ts +0 -65
  112. package/jest.config.js +0 -19
  113. package/src/assets/pgtypes.ts +0 -2782
  114. package/src/clients/QuillServerClient.ts +0 -23
  115. package/src/db/BigQuery.ts +0 -220
  116. package/src/db/CachedConnection.ts +0 -109
  117. package/src/db/DatabaseHelper.ts +0 -373
  118. package/src/db/Mysql.ts +0 -262
  119. package/src/db/Postgres.ts +0 -185
  120. package/src/db/Snowflake.ts +0 -240
  121. package/src/index.ts +0 -392
  122. package/src/models/Cache.ts +0 -18
  123. package/src/models/Client.ts +0 -29
  124. package/src/models/Database.ts +0 -5
  125. package/src/models/Formats.ts +0 -19
  126. package/src/models/Quill.ts +0 -82
  127. package/src/utils/Error.ts +0 -35
  128. package/src/utils/RunQueryProcesses.ts +0 -33
  129. package/src/utils/schemaConversion.ts +0 -11
  130. package/src/utils/textProcessing.ts +0 -13
  131. package/tsconfig.json +0 -15
  132. /package/dist/{assets → cjs/assets}/pgtypes.d.ts +0 -0
  133. /package/dist/{clients → cjs/clients}/QuillServerClient.d.ts +0 -0
  134. /package/dist/{db → cjs/db}/BigQuery.d.ts +0 -0
  135. /package/dist/{db → cjs/db}/CachedConnection.d.ts +0 -0
  136. /package/dist/{db → cjs/db}/DatabaseHelper.d.ts +0 -0
  137. /package/dist/{db → cjs/db}/Mysql.d.ts +0 -0
  138. /package/dist/{db → cjs/db}/Postgres.d.ts +0 -0
  139. /package/dist/{db → cjs/db}/Snowflake.d.ts +0 -0
  140. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  141. /package/dist/{index.ispec.d.ts → cjs/index.ispec.d.ts} +0 -0
  142. /package/dist/{index.uspec.d.ts → cjs/index.uspec.d.ts} +0 -0
  143. /package/dist/{models → cjs/models}/Cache.d.ts +0 -0
  144. /package/dist/{models → cjs/models}/Client.d.ts +0 -0
  145. /package/dist/{models → cjs/models}/Database.d.ts +0 -0
  146. /package/dist/{models → cjs/models}/Formats.d.ts +0 -0
  147. /package/dist/{utils → cjs/utils}/Error.d.ts +0 -0
  148. /package/dist/{utils → cjs/utils}/RunQueryProcesses.d.ts +0 -0
  149. /package/dist/{utils → cjs/utils}/schemaConversion.d.ts +0 -0
  150. /package/dist/{utils → cjs/utils}/textProcessing.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Postgres.js","sourceRoot":"","sources":["../../../src/db/Postgres.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import snowflake from "snowflake-sdk";
2
+ import { QuillQueryResults } from "./DatabaseHelper";
3
+ export type SnowflakeConnectionConfig = {
4
+ account: string;
5
+ username: string;
6
+ password: string;
7
+ database: string;
8
+ warehouse: string;
9
+ };
10
+ export declare function runQuerySnowflake(sql: string, connection: snowflake.Connection): Promise<QuillQueryResults>;
11
+ export declare function getSchemasSnowflake(connection: snowflake.Connection): Promise<string[]>;
12
+ export declare function getTablesBySchemaSnowflake(connection: snowflake.Connection, schemaNames: string[]): Promise<{
13
+ tableName: string;
14
+ schemaName: string;
15
+ }[]>;
16
+ export declare function getColumnsByTableSnowflake(connection: snowflake.Connection, schemaName: string, tableName: string): Promise<string[]>;
17
+ export declare function formatSnowflakeConfig(connectionString: string): SnowflakeConnectionConfig;
18
+ export declare function connectToSnowflake(config: SnowflakeConnectionConfig): snowflake.Connection;
19
+ export declare function disconnectFromSnowflake(connection: snowflake.Connection): Promise<void>;
20
+ export declare function getForeignKeysSnowflake(connection: snowflake.Connection, schemaName: string, tableName: string, primaryKey: string): Promise<string[]>;
21
+ export declare function getSchemaColumnInfoSnowflake(connection: snowflake.Connection, schemaName: string, tableNames: {
22
+ tableName: string;
23
+ schemaName: string;
24
+ }[]): Promise<{
25
+ tableName: string;
26
+ displayName: string;
27
+ columns: {
28
+ columnName: any;
29
+ displayName: any;
30
+ dataTypeID: number;
31
+ fieldType: any;
32
+ }[];
33
+ }[]>;
@@ -0,0 +1,203 @@
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 snowflake from "snowflake-sdk";
11
+ import { capitalize, depluralize } from "../utils/textProcessing";
12
+ const POSTGRES_SNOWFLAKE_MAP = {
13
+ // Numeric Types
14
+ NUMBER: 1700, // NUMERIC
15
+ DECIMAL: 1700, // NUMERIC
16
+ NUMERIC: 1700, // NUMERIC
17
+ INT: 23, // INTEGER
18
+ INTEGER: 23, // INTEGER
19
+ BIGINT: 20, // BIGINT
20
+ SMALLINT: 21, // SMALLINT
21
+ TINYINT: 21, // SMALLINT (PostgreSQL doesn't have TINYINT)
22
+ BYTEINT: 21, // SMALLINT (PostgreSQL doesn't have BYTEINT)
23
+ FLOAT: 701, // DOUBLE PRECISION
24
+ FLOAT4: 700, // REAL
25
+ FLOAT8: 701, // DOUBLE PRECISION
26
+ DOUBLE: 701, // DOUBLE PRECISION
27
+ REAL: 700, // REAL
28
+ // Boolean Type
29
+ BOOLEAN: 16, // BOOLEAN
30
+ // String Types
31
+ VARCHAR: 1043, // VARCHAR
32
+ CHAR: 1042, // CHAR
33
+ CHARACTER: 1042, // CHAR
34
+ STRING: 25, // TEXT
35
+ TEXT: 25, // TEXT
36
+ // Binary Types
37
+ BINARY: 17, // BYTEA
38
+ VARBINARY: 17, // BYTEA
39
+ // Date and Time Types
40
+ DATE: 1082, // DATE
41
+ DATETIME: 1184, // TIMESTAMP
42
+ TIME: 1083, // TIME
43
+ TIMESTAMP: 1184, // TIMESTAMP
44
+ TIMESTAMP_LTZ: 1184, // TIMESTAMP WITH TIME ZONE
45
+ TIMESTAMP_NTZ: 1114, // TIMESTAMP WITHOUT TIME ZONE
46
+ TIMESTAMP_TZ: 1184, // TIMESTAMP WITH TIME ZONE
47
+ // Semi-structured Data Types
48
+ VARIANT: 3802, // JSONB
49
+ OBJECT: 3802, // JSONB
50
+ ARRAY: 2277, // JSON[] (closest equivalent)
51
+ // Geospatial Type
52
+ GEOGRAPHY: 25, // TEXT (PostgreSQL doesn't have a direct equivalent)
53
+ GEOMETRY: 25, // TEXT (PostgreSQL doesn't have a direct equivalent)
54
+ // Vector Type
55
+ VECTOR: 3802, // JSONB (closest equivalent without extensions)
56
+ };
57
+ export function runQuerySnowflake(sql, connection) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ const results = yield new Promise((resolve, reject) => {
60
+ connection.execute({
61
+ sqlText: sql,
62
+ complete: (err, stmt, rows) => {
63
+ if (err) {
64
+ reject(err);
65
+ return { success: false, message: err.message };
66
+ }
67
+ else {
68
+ resolve({
69
+ rows,
70
+ fields: stmt.getColumns().map((col) => ({
71
+ name: col.getName(),
72
+ dataTypeID: POSTGRES_SNOWFLAKE_MAP[col.getType().toUpperCase()],
73
+ })),
74
+ });
75
+ }
76
+ },
77
+ });
78
+ });
79
+ return results;
80
+ });
81
+ }
82
+ export function getSchemasSnowflake(connection) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ const sql = `SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
85
+ WHERE SCHEMA_NAME != 'INFORMATION_SCHEMA'`;
86
+ const results = yield runQuerySnowflake(sql, connection);
87
+ return results.rows.map((row) => row.SCHEMA_NAME);
88
+ });
89
+ }
90
+ export function getTablesBySchemaSnowflake(connection, schemaNames) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const allColumns = yield Promise.all(schemaNames.map((schema) => __awaiter(this, void 0, void 0, function* () {
93
+ const query = `SELECT
94
+ TABLE_NAME as "tableName",
95
+ TABLE_SCHEMA as "schemaName"
96
+ FROM INFORMATION_SCHEMA.TABLES
97
+ WHERE TABLE_SCHEMA = '${schema}';
98
+ `;
99
+ const results = yield runQuerySnowflake(query, connection);
100
+ return results.rows.map((row) => {
101
+ return { tableName: row.tableName, schemaName: row.schemaName };
102
+ });
103
+ })));
104
+ return allColumns.flat();
105
+ });
106
+ }
107
+ export function getColumnsByTableSnowflake(connection, schemaName, tableName) {
108
+ return __awaiter(this, void 0, void 0, function* () {
109
+ const sql = `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '${schemaName}' AND TABLE_NAME = '${tableName}'`;
110
+ const results = yield runQuerySnowflake(sql, connection);
111
+ return results.rows.map((row) => row.COLUMN_NAME);
112
+ });
113
+ }
114
+ export function formatSnowflakeConfig(connectionString) {
115
+ const parsed = new URL(connectionString);
116
+ return {
117
+ account: parsed.hostname,
118
+ username: parsed.username,
119
+ password: parsed.password,
120
+ database: parsed.pathname.split("/")[1],
121
+ warehouse: parsed.pathname.split("/")[2],
122
+ };
123
+ }
124
+ export function connectToSnowflake(config) {
125
+ const connection = snowflake.createConnection(Object.assign(Object.assign({}, config), { clientSessionKeepAlive: true }));
126
+ connection.connect((err) => {
127
+ if (err) {
128
+ console.error(`Failed to connect to Snowflake: ${err.message}`);
129
+ }
130
+ });
131
+ return connection;
132
+ }
133
+ export function disconnectFromSnowflake(connection) {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ connection.destroy((err) => {
136
+ if (err) {
137
+ console.error(`Failed to disconnect from Snowflake: ${err.message}`);
138
+ }
139
+ });
140
+ });
141
+ }
142
+ export function getForeignKeysSnowflake(connection, schemaName, tableName, primaryKey) {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ const depluralizedTableName = depluralize(tableName);
145
+ let sql = `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
146
+ WHERE TABLE_SCHEMA = '${schemaName}'
147
+ AND TABLE_NAME = '${schemaName}'
148
+ and TABLE_NAME != '${tableName}'
149
+ and (COLUMN_NAME = '${primaryKey}'
150
+ or COLUMN_NAME = '${depluralizedTableName}_${primaryKey}'
151
+ or COLUMN_NAME = '${depluralizedTableName}${capitalize(primaryKey)}')`;
152
+ const results = yield runQuerySnowflake(sql, connection);
153
+ let foreignKeysString = results.rows.map((key) => {
154
+ return key.COLUMN_NAME;
155
+ });
156
+ foreignKeysString = foreignKeysString.filter((key) => key !== "id" && key !== "_id_");
157
+ foreignKeysString = [...new Set(foreignKeysString)];
158
+ if (foreignKeysString.length === 0) {
159
+ sql = `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
160
+ WHERE TABLE_SCHEMA = '${schemaName}'
161
+ AND TABLE_NAME = '${schemaName}'
162
+ and TABLE_NAME != '${tableName}'
163
+ and (COLUMN_NAME like '${depluralizedTableName}%'
164
+ or column_name like '%\\_id'
165
+ or column_name like '%Id'
166
+ or COLUMN_NAME like '%\\_${primaryKey}'
167
+ or COLUMN_NAME like '%${capitalize(primaryKey)}')`;
168
+ const results = yield runQuerySnowflake(sql, connection);
169
+ foreignKeysString = results.rows.map((key) => {
170
+ return key.COLUMN_NAME;
171
+ });
172
+ foreignKeysString = [...new Set(foreignKeysString)];
173
+ }
174
+ return foreignKeysString;
175
+ });
176
+ }
177
+ export function getSchemaColumnInfoSnowflake(connection, schemaName, tableNames) {
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ const allColumns = yield Promise.all(tableNames.map((tableName) => __awaiter(this, void 0, void 0, function* () {
180
+ const query = `SELECT
181
+ COLUMN_NAME as "columnName", DATA_TYPE as "dataType"
182
+ FROM INFORMATION_SCHEMA.COLUMNS
183
+ WHERE TABLE_SCHEMA = '${tableName.schemaName}' AND TABLE_NAME = '${tableName.tableName}';
184
+ `;
185
+ const results = yield runQuerySnowflake(query, connection);
186
+ return {
187
+ tableName: `${tableName.schemaName}.${tableName.tableName}`,
188
+ displayName: `${tableName.schemaName}.${tableName.tableName}`,
189
+ columns: results.rows.map((row) => {
190
+ const postgresType = POSTGRES_SNOWFLAKE_MAP[row.dataType];
191
+ return {
192
+ columnName: row.columnName,
193
+ displayName: row.columnName,
194
+ dataTypeID: postgresType,
195
+ fieldType: row.dataType,
196
+ };
197
+ }),
198
+ };
199
+ })));
200
+ return allColumns;
201
+ });
202
+ }
203
+ //# sourceMappingURL=Snowflake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Snowflake.js","sourceRoot":"","sources":["../../../src/db/Snowflake.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /// <reference types="node" />
2
+ import { CacheCredentials } from "./models/Cache";
3
+ import { QuillQueryParams } from "./models/Quill";
4
+ import "dotenv/config";
5
+ /**
6
+ * Quill - Fullstack API Platform for Dashboards and Reporting.
7
+ */
8
+ export interface QuillQueryResult {
9
+ data?: any;
10
+ status: string;
11
+ error?: string;
12
+ queries?: {
13
+ rows: any[];
14
+ fields: any[];
15
+ };
16
+ }
17
+ export declare enum DatabaseType {
18
+ postgresql = "postgresql",
19
+ snowflake = "snowflake",
20
+ bigquery = "bigquery",
21
+ mysql = "mysql"
22
+ }
23
+ export declare class Quill implements AsyncDisposable {
24
+ private targetConnection;
25
+ private baseUrl;
26
+ private config;
27
+ constructor(data: {
28
+ privateKey: string;
29
+ databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql";
30
+ databaseConnectionString?: string;
31
+ databaseConfig?: any;
32
+ cache?: Partial<CacheCredentials>;
33
+ metadataServerURL?: string;
34
+ });
35
+ query({ orgId, metadata, filters, }: QuillQueryParams): Promise<QuillQueryResult>;
36
+ private runQueries;
37
+ private postQuill;
38
+ [Symbol.asyncDispose](): Promise<void>;
39
+ close(): Promise<void>;
40
+ }
41
+ export { QuillQueryParams as QuillRequest } from "./models/Quill";
File without changes
@@ -1,29 +1,24 @@
1
+ "use strict";
1
2
  // import Quill from ".";
2
3
  // import "dotenv/config";
3
-
4
4
  // const HOST =
5
5
  // process.env.ENV === "development"
6
6
  // ? "http://localhost:8080"
7
7
  // : "https://quill-344421.uc.r.appspot.com";
8
-
9
8
  // describe("Quill", () => {
10
9
  // let quill: Quill;
11
-
12
10
  // beforeEach(() => {
13
11
  // quill = new Quill(
14
12
  // process.env.QUILL_PRIVATE_KEY as string,
15
13
  // process.env.DB_URL as string
16
14
  // );
17
15
  // });
18
-
19
16
  // afterEach(async () => {
20
17
  // await quill.close();
21
18
  // });
22
-
23
19
  // afterAll(() => {
24
20
  // jest.restoreAllMocks();
25
21
  // });
26
-
27
22
  // describe("query", () => {
28
23
  // it("org - should return ", async () => {
29
24
  // const metadata = {
@@ -38,3 +33,4 @@
38
33
  // });
39
34
  // });
40
35
  // });
36
+ //# sourceMappingURL=index.ispec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.ispec.js","sourceRoot":"","sources":["../../src/index.ispec.ts"],"names":[],"mappings":";AAAA,yBAAyB;AACzB,0BAA0B;AAE1B,eAAe;AACf,sCAAsC;AACtC,gCAAgC;AAChC,iDAAiD;AAEjD,4BAA4B;AAC5B,sBAAsB;AAEtB,uBAAuB;AACvB,yBAAyB;AACzB,iDAAiD;AACjD,qCAAqC;AACrC,SAAS;AACT,QAAQ;AAER,0BAA0B;AAC1B,yBAAyB;AACzB,MAAM;AAEN,qBAAqB;AACrB,8BAA8B;AAC9B,QAAQ;AAER,8BAA8B;AAC9B,+CAA+C;AAC/C,2BAA2B;AAC3B,wBAAwB;AACxB,gDAAgD;AAChD,WAAW;AACX,2CAA2C;AAC3C,sBAAsB;AACtB,oBAAoB;AACpB,YAAY;AACZ,iCAAiC;AACjC,UAAU;AACV,QAAQ;AACR,MAAM"}
@@ -0,0 +1,266 @@
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 { CachedConnection } from "./db/CachedConnection";
11
+ import axios from "axios";
12
+ import "dotenv/config";
13
+ import { mapQueries, removeFields } from "./utils/RunQueryProcesses";
14
+ import { connectToDatabase, connectAndRunQuery, getColumnInfoBySchemaByDatabase, getColumnsByTableByDatabase, getDatabaseCredentials, getForiegnKeysByDatabase, getSchemasByDatabase, getTablesBySchemaByDatabase, runQueryByDatabase, withConnection, } from "./db/DatabaseHelper";
15
+ import { convertTypeToPostgres } from "./utils/schemaConversion";
16
+ const HOST = process.env.ENV === "development"
17
+ ? "http://localhost:8080"
18
+ : "https://quill-344421.uc.r.appspot.com";
19
+ export var DatabaseType;
20
+ (function (DatabaseType) {
21
+ DatabaseType["postgresql"] = "postgresql";
22
+ DatabaseType["snowflake"] = "snowflake";
23
+ DatabaseType["bigquery"] = "bigquery";
24
+ DatabaseType["mysql"] = "mysql";
25
+ })(DatabaseType || (DatabaseType = {}));
26
+ export class Quill {
27
+ constructor(data) {
28
+ const { privateKey, databaseType, databaseConnectionString, databaseConfig, cache, metadataServerURL, } = data;
29
+ this.baseUrl = metadataServerURL ? metadataServerURL : HOST;
30
+ this.config = { headers: { Authorization: `Bearer ${privateKey}` } };
31
+ let credentials = databaseConfig;
32
+ if (databaseConnectionString) {
33
+ credentials = getDatabaseCredentials(databaseType, databaseConnectionString);
34
+ }
35
+ this.targetConnection = new CachedConnection(databaseType, credentials, cache || {});
36
+ }
37
+ query({ orgId, metadata, filters, }) {
38
+ var _a, _b;
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ this.targetConnection.orgId = orgId;
41
+ let responseMetadata = {};
42
+ if (!metadata.task) {
43
+ return { error: "Missing task.", status: "error", data: {} };
44
+ }
45
+ try {
46
+ const preQueryResults = metadata.preQueries
47
+ ? yield this.runQueries(metadata.preQueries, this.targetConnection.databaseType, metadata.databaseType, metadata.runQueryConfig)
48
+ : {};
49
+ if ((_a = metadata.runQueryConfig) === null || _a === void 0 ? void 0 : _a.overridePost) {
50
+ return {
51
+ data: { queryResults: preQueryResults },
52
+ status: "success",
53
+ };
54
+ }
55
+ 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 }));
56
+ if (response.error) {
57
+ return {
58
+ status: "error",
59
+ error: response.error,
60
+ data: response.metadata || {},
61
+ };
62
+ }
63
+ // if there is no metadata object in the response, create one
64
+ if (response.metadata) {
65
+ responseMetadata = response.metadata;
66
+ }
67
+ const results = yield this.runQueries(response.queries, this.targetConnection.databaseType, metadata.databaseType, responseMetadata.runQueryConfig);
68
+ // QUICK JANKY FIX TO UPDATE METADATA AFTER GETTING MAPPED ARRAYS
69
+ if (results.mappedArray && ((_b = responseMetadata.runQueryConfig) === null || _b === void 0 ? void 0 : _b.arrayToMap)) {
70
+ const arrayToMap = responseMetadata.runQueryConfig.arrayToMap;
71
+ results.mappedArray.forEach((array, index) => {
72
+ responseMetadata[arrayToMap.arrayName][index][arrayToMap.field] =
73
+ array;
74
+ });
75
+ delete results.mappedArray;
76
+ }
77
+ // if there is a single query array in queryResults and the rows and field objects to metadata
78
+ if ((results === null || results === void 0 ? void 0 : results.queryResults.length) === 1) {
79
+ const queryResults = results.queryResults[0];
80
+ if (queryResults.rows) {
81
+ responseMetadata.rows = queryResults.rows;
82
+ }
83
+ if (queryResults.fields) {
84
+ responseMetadata.fields = queryResults.fields;
85
+ }
86
+ }
87
+ return {
88
+ data: responseMetadata,
89
+ queries: results,
90
+ status: "success",
91
+ };
92
+ }
93
+ catch (err) {
94
+ if (metadata.task === "update-view") {
95
+ this.postQuill("set-broken-view", {
96
+ table: metadata.name,
97
+ clientId: metadata.clientId,
98
+ error: err.message,
99
+ });
100
+ }
101
+ return {
102
+ status: "error",
103
+ error: err.message,
104
+ data: responseMetadata || {},
105
+ };
106
+ }
107
+ });
108
+ }
109
+ runQueries(queries, pkDatabaseType, databaseType, runQueryConfig) {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ let results;
112
+ if (!queries)
113
+ return Object.assign(Object.assign({}, results), { queryResults: [] });
114
+ if (databaseType &&
115
+ databaseType.toLowerCase() !== pkDatabaseType.toLowerCase()) {
116
+ return {
117
+ dbMismatched: true,
118
+ backendDatabaseType: pkDatabaseType,
119
+ queryResults: [],
120
+ };
121
+ }
122
+ if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.arrayToMap) {
123
+ const mappedArray = yield mapQueries(queries, this.targetConnection);
124
+ return Object.assign(Object.assign({}, results), { queryResults: [], mappedArray });
125
+ }
126
+ else if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.getColumns) {
127
+ const queryResult = yield this.targetConnection.query(`${queries[0].replace(/;/, "")} limit 1000`);
128
+ const columns = queryResult.fields.map((field) => {
129
+ return {
130
+ fieldType: convertTypeToPostgres(field.dataTypeID),
131
+ name: field.name,
132
+ displayName: field.name,
133
+ isVisible: true,
134
+ field: field.name,
135
+ };
136
+ });
137
+ return { columns };
138
+ }
139
+ else if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.getColumnsForSchema) {
140
+ const queryResults = yield Promise.all(queries.map((table) => __awaiter(this, void 0, void 0, function* () {
141
+ if (!table.viewQuery ||
142
+ (!table.isSelectStar && !table.customFieldInfo)) {
143
+ return table;
144
+ }
145
+ let limit = "";
146
+ if (runQueryConfig.limitBy) {
147
+ limit = ` limit ${runQueryConfig.limitBy}`;
148
+ }
149
+ try {
150
+ const queryResult = yield this.targetConnection.query(`${table.viewQuery.replace(/;/, "")} ${limit}`);
151
+ const columns = queryResult.fields.map((field) => {
152
+ return {
153
+ fieldType: convertTypeToPostgres(field.dataTypeID),
154
+ name: field.name,
155
+ displayName: field.name,
156
+ isVisible: true,
157
+ field: field.name,
158
+ };
159
+ });
160
+ return Object.assign(Object.assign({}, table), { columns: columns, rows: queryResult.rows });
161
+ }
162
+ catch (err) {
163
+ return Object.assign(Object.assign({}, table), { error: err.message
164
+ ? `Error fetching columns: ${err.message}`
165
+ : "Error fetching columns" });
166
+ }
167
+ })));
168
+ results = Object.assign(Object.assign({}, results), { queryResults });
169
+ if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.fieldsToRemove) {
170
+ results = Object.assign(Object.assign({}, results), { queryResults: queryResults.map((table) => {
171
+ const removedColumns = table.columns.filter((column) => {
172
+ var _a;
173
+ return !((_a = runQueryConfig.fieldsToRemove) === null || _a === void 0 ? void 0 : _a.includes(column.name));
174
+ });
175
+ return Object.assign(Object.assign({}, table), { columns: removedColumns });
176
+ }) });
177
+ }
178
+ }
179
+ else if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.getTables) {
180
+ const queryResult = yield getTablesBySchemaByDatabase(this.targetConnection.databaseType, this.targetConnection.getPool(), runQueryConfig.schemaNames || runQueryConfig.schema);
181
+ const schemaInfo = yield getColumnInfoBySchemaByDatabase(this.targetConnection.databaseType, this.targetConnection.getPool(), runQueryConfig.schema, queryResult);
182
+ return schemaInfo;
183
+ }
184
+ else {
185
+ if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.limitThousand) {
186
+ queries = queries.map((query) => {
187
+ return query.replace(/;/, "") + " limit 1000;";
188
+ });
189
+ }
190
+ else if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.limitBy) {
191
+ queries = queries.map((query) => {
192
+ return query.replace(/;/, "") + " limit " + runQueryConfig.limitBy;
193
+ });
194
+ }
195
+ const queryResults = yield Promise.all(queries.map((query) => __awaiter(this, void 0, void 0, function* () {
196
+ return yield this.targetConnection.query(query);
197
+ })));
198
+ results = Object.assign(Object.assign({}, results), { queryResults });
199
+ if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.fieldsToRemove) {
200
+ results = Object.assign(Object.assign({}, results), { queryResults: queryResults.map((queryResult) => {
201
+ return removeFields(queryResult, runQueryConfig.fieldsToRemove);
202
+ }) });
203
+ }
204
+ if (runQueryConfig === null || runQueryConfig === void 0 ? void 0 : runQueryConfig.convertDatatypes) {
205
+ results = queryResults.map((result) => {
206
+ return {
207
+ fields: result.fields.map((field) => {
208
+ return Object.assign(Object.assign({}, field), { fieldType: convertTypeToPostgres(field.dataTypeID), isVisible: true, field: field.name, displayName: field.name, name: field.name });
209
+ }),
210
+ rows: result.rows,
211
+ };
212
+ });
213
+ }
214
+ }
215
+ return results;
216
+ });
217
+ }
218
+ postQuill(path, payload) {
219
+ return __awaiter(this, void 0, void 0, function* () {
220
+ try {
221
+ const response = yield axios.post(`${this.baseUrl}/sdk/${path}`, payload, this.config);
222
+ return response.data;
223
+ }
224
+ catch (e) {
225
+ return new Promise((_, reject) => { var _a, _b; return reject({ message: ((_b = (_a = e === null || e === void 0 ? void 0 : e.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.error) || e.message || e }); });
226
+ }
227
+ });
228
+ }
229
+ [Symbol.asyncDispose]() {
230
+ return __awaiter(this, void 0, void 0, function* () {
231
+ yield this.close();
232
+ });
233
+ }
234
+ close() {
235
+ return __awaiter(this, void 0, void 0, function* () {
236
+ yield this.targetConnection.close();
237
+ });
238
+ }
239
+ }
240
+ const requireQuill = ({ privateKey, databaseConnectionString, databaseConfig, cache, databaseType, metadataServerURL, }) => {
241
+ return new Quill({
242
+ privateKey,
243
+ databaseType,
244
+ databaseConnectionString,
245
+ databaseConfig,
246
+ cache,
247
+ metadataServerURL,
248
+ });
249
+ };
250
+ module.exports = requireQuill;
251
+ module.exports.default = requireQuill;
252
+ module.exports.withConnection = withConnection;
253
+ module.exports.connectToDatabase = connectToDatabase;
254
+ module.exports.connectAndRunQuery = connectAndRunQuery;
255
+ module.exports.Quill = Quill;
256
+ module.exports.getTablesBySchemaByDatabase = getTablesBySchemaByDatabase;
257
+ module.exports.getDatabaseCredentials = getDatabaseCredentials;
258
+ module.exports.getColumnsByTableByDatabase = getColumnsByTableByDatabase;
259
+ module.exports.getForiegnKeysByDatabase = getForiegnKeysByDatabase;
260
+ module.exports.getSchemasByDatabase = getSchemasByDatabase;
261
+ module.exports.getColumnInfoBySchemaByDatabase =
262
+ getColumnInfoBySchemaByDatabase;
263
+ module.exports.runQueryByDatabase = runQueryByDatabase;
264
+ module.exports.DatabaseType = DatabaseType;
265
+ module.exports.Filters = require("./models/Filters");
266
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
File without changes