@quillsql/node 0.6.8 → 0.6.10

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.d.ts +1 -1
  8. package/dist/{db → cjs/db}/CachedConnection.js +2 -0
  9. package/dist/cjs/db/CachedConnection.js.map +1 -0
  10. package/dist/{db → cjs/db}/DatabaseHelper.js +1 -0
  11. package/dist/cjs/db/DatabaseHelper.js.map +1 -0
  12. package/dist/{db → cjs/db}/Mysql.js +1 -0
  13. package/dist/cjs/db/Mysql.js.map +1 -0
  14. package/dist/{db → cjs/db}/Postgres.js +5 -0
  15. package/dist/cjs/db/Postgres.js.map +1 -0
  16. package/dist/{db → cjs/db}/Snowflake.js +1 -0
  17. package/dist/cjs/db/Snowflake.js.map +1 -0
  18. package/dist/{index.ispec.js → cjs/index.ispec.js} +1 -0
  19. package/dist/cjs/index.ispec.js.map +1 -0
  20. package/dist/{index.js → cjs/index.js} +4 -1
  21. package/dist/cjs/index.js.map +1 -0
  22. package/dist/{index.uspec.js → cjs/index.uspec.js} +1 -0
  23. package/dist/cjs/index.uspec.js.map +1 -0
  24. package/dist/{models → cjs/models}/Cache.js +1 -0
  25. package/dist/cjs/models/Cache.js.map +1 -0
  26. package/dist/{models → cjs/models}/Client.js +1 -0
  27. package/dist/cjs/models/Client.js.map +1 -0
  28. package/dist/{models → cjs/models}/Database.js +1 -0
  29. package/dist/cjs/models/Database.js.map +1 -0
  30. package/dist/cjs/models/Filters.d.ts +83 -0
  31. package/dist/cjs/models/Filters.js +178 -0
  32. package/dist/cjs/models/Filters.js.map +1 -0
  33. package/dist/{models → cjs/models}/Formats.js +1 -0
  34. package/dist/cjs/models/Formats.js.map +1 -0
  35. package/dist/{models → cjs/models}/Quill.d.ts +12 -7
  36. package/dist/{models → cjs/models}/Quill.js +1 -0
  37. package/dist/cjs/models/Quill.js.map +1 -0
  38. package/dist/{utils → cjs/utils}/Error.js +1 -0
  39. package/dist/cjs/utils/Error.js.map +1 -0
  40. package/dist/{utils → cjs/utils}/RunQueryProcesses.js +1 -0
  41. package/dist/cjs/utils/RunQueryProcesses.js.map +1 -0
  42. package/dist/{utils → cjs/utils}/schemaConversion.js +1 -0
  43. package/dist/cjs/utils/schemaConversion.js.map +1 -0
  44. package/dist/{utils → cjs/utils}/textProcessing.js +1 -0
  45. package/dist/cjs/utils/textProcessing.js.map +1 -0
  46. package/dist/esm/assets/pgtypes.d.ts +4 -0
  47. package/dist/esm/assets/pgtypes.js +2783 -0
  48. package/dist/esm/assets/pgtypes.js.map +1 -0
  49. package/dist/esm/clients/QuillServerClient.d.ts +8 -0
  50. package/dist/esm/clients/QuillServerClient.js +24 -0
  51. package/dist/esm/clients/QuillServerClient.js.map +1 -0
  52. package/dist/esm/db/BigQuery.d.ts +27 -0
  53. package/dist/esm/db/BigQuery.js +201 -0
  54. package/dist/esm/db/BigQuery.js.map +1 -0
  55. package/dist/esm/db/CachedConnection.d.ts +23 -0
  56. package/dist/esm/db/CachedConnection.js +81 -0
  57. package/dist/esm/db/CachedConnection.js.map +1 -0
  58. package/dist/esm/db/DatabaseHelper.d.ts +50 -0
  59. package/dist/esm/db/DatabaseHelper.js +188 -0
  60. package/dist/esm/db/DatabaseHelper.js.map +1 -0
  61. package/dist/esm/db/Mysql.d.ts +30 -0
  62. package/dist/esm/db/Mysql.js +219 -0
  63. package/dist/esm/db/Mysql.js.map +1 -0
  64. package/dist/esm/db/Postgres.d.ts +32 -0
  65. package/dist/esm/db/Postgres.js +161 -0
  66. package/dist/esm/db/Postgres.js.map +1 -0
  67. package/dist/esm/db/Snowflake.d.ts +33 -0
  68. package/dist/esm/db/Snowflake.js +203 -0
  69. package/dist/esm/db/Snowflake.js.map +1 -0
  70. package/dist/esm/index.d.ts +41 -0
  71. package/dist/esm/index.ispec.d.ts +0 -0
  72. package/{src/index.ispec.ts → dist/esm/index.ispec.js} +2 -6
  73. package/dist/esm/index.ispec.js.map +1 -0
  74. package/dist/esm/index.js +267 -0
  75. package/dist/esm/index.js.map +1 -0
  76. package/dist/esm/index.uspec.d.ts +0 -0
  77. package/{src/index.uspec.ts → dist/esm/index.uspec.js} +2 -6
  78. package/dist/esm/index.uspec.js.map +1 -0
  79. package/dist/esm/models/Cache.d.ts +12 -0
  80. package/dist/esm/models/Cache.js +2 -0
  81. package/dist/esm/models/Cache.js.map +1 -0
  82. package/dist/esm/models/Client.d.ts +29 -0
  83. package/dist/esm/models/Client.js +2 -0
  84. package/dist/esm/models/Client.js.map +1 -0
  85. package/dist/esm/models/Database.d.ts +5 -0
  86. package/dist/esm/models/Database.js +2 -0
  87. package/dist/esm/models/Database.js.map +1 -0
  88. package/dist/esm/models/Filters.d.ts +83 -0
  89. package/dist/esm/models/Filters.js +174 -0
  90. package/dist/esm/models/Filters.js.map +1 -0
  91. package/dist/esm/models/Formats.d.ts +7 -0
  92. package/dist/esm/models/Formats.js +2 -0
  93. package/dist/esm/models/Formats.js.map +1 -0
  94. package/dist/esm/models/Quill.d.ts +82 -0
  95. package/dist/esm/models/Quill.js +2 -0
  96. package/dist/esm/models/Quill.js.map +1 -0
  97. package/dist/esm/utils/Error.d.ts +8 -0
  98. package/dist/esm/utils/Error.js +23 -0
  99. package/dist/esm/utils/Error.js.map +1 -0
  100. package/dist/esm/utils/RunQueryProcesses.d.ts +9 -0
  101. package/dist/esm/utils/RunQueryProcesses.js +30 -0
  102. package/dist/esm/utils/RunQueryProcesses.js.map +1 -0
  103. package/dist/esm/utils/schemaConversion.d.ts +1 -0
  104. package/dist/esm/utils/schemaConversion.js +12 -0
  105. package/dist/esm/utils/schemaConversion.js.map +1 -0
  106. package/dist/esm/utils/textProcessing.d.ts +2 -0
  107. package/dist/esm/utils/textProcessing.js +13 -0
  108. package/dist/esm/utils/textProcessing.js.map +1 -0
  109. package/package.json +11 -6
  110. package/eslint.config.mjs +0 -16
  111. package/examples/mysql-node/app.ts +0 -61
  112. package/examples/node-server/app.ts +0 -65
  113. package/jest.config.js +0 -19
  114. package/src/assets/pgtypes.ts +0 -2782
  115. package/src/clients/QuillServerClient.ts +0 -23
  116. package/src/db/BigQuery.ts +0 -220
  117. package/src/db/CachedConnection.ts +0 -109
  118. package/src/db/DatabaseHelper.ts +0 -373
  119. package/src/db/Mysql.ts +0 -262
  120. package/src/db/Postgres.ts +0 -185
  121. package/src/db/Snowflake.ts +0 -240
  122. package/src/index.ts +0 -392
  123. package/src/models/Cache.ts +0 -18
  124. package/src/models/Client.ts +0 -29
  125. package/src/models/Database.ts +0 -5
  126. package/src/models/Formats.ts +0 -19
  127. package/src/models/Quill.ts +0 -82
  128. package/src/utils/Error.ts +0 -35
  129. package/src/utils/RunQueryProcesses.ts +0 -33
  130. package/src/utils/schemaConversion.ts +0 -11
  131. package/src/utils/textProcessing.ts +0 -13
  132. package/tsconfig.json +0 -15
  133. /package/dist/{assets → cjs/assets}/pgtypes.d.ts +0 -0
  134. /package/dist/{clients → cjs/clients}/QuillServerClient.d.ts +0 -0
  135. /package/dist/{db → cjs/db}/BigQuery.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
package/src/index.ts DELETED
@@ -1,392 +0,0 @@
1
- import { CacheCredentials } from "./models/Cache";
2
- import {
3
- AdditionalProcessing,
4
- QuillClientResponse,
5
- QuillQueryParams,
6
- } from "./models/Quill";
7
- import { CachedConnection } from "./db/CachedConnection";
8
- import axios from "axios";
9
- import "dotenv/config";
10
- import { mapQueries, removeFields } from "./utils/RunQueryProcesses";
11
- import {
12
- connectToDatabase,
13
- connectAndRunQuery,
14
- getColumnInfoBySchemaByDatabase,
15
- getColumnsByTableByDatabase,
16
- getDatabaseCredentials,
17
- getForiegnKeysByDatabase,
18
- getSchemasByDatabase,
19
- getTablesBySchemaByDatabase,
20
- runQueryByDatabase,
21
- withConnection,
22
- } from "./db/DatabaseHelper";
23
- import { convertTypeToPostgres } from "./utils/schemaConversion";
24
-
25
- const HOST =
26
- process.env.ENV === "development"
27
- ? "http://localhost:8080"
28
- : "https://quill-344421.uc.r.appspot.com";
29
-
30
- /**
31
- * Quill - Fullstack API Platform for Dashboards and Reporting.
32
- */
33
-
34
- export interface QuillQueryResult {
35
- data?: any;
36
- status: string;
37
- error?: string;
38
- queries?: { rows: any[]; fields: any[] };
39
- }
40
-
41
- export enum DatabaseType {
42
- postgresql = "postgresql",
43
- snowflake = "snowflake",
44
- bigquery = "bigquery",
45
- mysql = "mysql",
46
- }
47
-
48
- export class Quill implements AsyncDisposable {
49
- // Configure cached connection pools with the given config.
50
- private targetConnection;
51
- private baseUrl: string;
52
- private config: {
53
- headers: {
54
- Authorization: string;
55
- };
56
- };
57
-
58
- constructor(data: {
59
- privateKey: string;
60
- databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql";
61
- databaseConnectionString?: string;
62
- databaseConfig?: any;
63
- cache?: Partial<CacheCredentials>;
64
- metadataServerURL?: string;
65
- }) {
66
- const {
67
- privateKey,
68
- databaseType,
69
- databaseConnectionString,
70
- databaseConfig,
71
- cache,
72
- metadataServerURL,
73
- } = data;
74
- this.baseUrl = metadataServerURL ? metadataServerURL : HOST;
75
- this.config = { headers: { Authorization: `Bearer ${privateKey}` } };
76
- let credentials = databaseConfig;
77
- if (databaseConnectionString) {
78
- credentials = getDatabaseCredentials(
79
- databaseType,
80
- databaseConnectionString,
81
- );
82
- }
83
- this.targetConnection = new CachedConnection(
84
- databaseType,
85
- credentials,
86
- cache || {},
87
- );
88
- }
89
-
90
- public async query({
91
- orgId,
92
- metadata,
93
- filters,
94
- }: QuillQueryParams): Promise<QuillQueryResult> {
95
- this.targetConnection.orgId = orgId;
96
- let responseMetadata: any = {};
97
-
98
- if (!metadata.task) {
99
- return { error: "Missing task.", status: "error", data: {} };
100
- }
101
-
102
- try {
103
- const preQueryResults = metadata.preQueries
104
- ? await this.runQueries(
105
- metadata.preQueries,
106
- this.targetConnection.databaseType,
107
- metadata.databaseType,
108
- metadata.runQueryConfig,
109
- )
110
- : {};
111
- if (metadata.runQueryConfig?.overridePost) {
112
- return {
113
- data: { queryResults: preQueryResults },
114
- status: "success",
115
- };
116
- }
117
- const response = await this.postQuill(metadata.task, {
118
- ...metadata,
119
- sdkFilters: filters,
120
- ...preQueryResults,
121
- orgId,
122
- viewQuery: metadata.preQueries ? metadata.preQueries[0] : undefined,
123
- });
124
- if (response.error) {
125
- return {
126
- status: "error",
127
- error: response.error,
128
- data: response.metadata || {},
129
- };
130
- }
131
- // if there is no metadata object in the response, create one
132
- if (response.metadata) {
133
- responseMetadata = response.metadata;
134
- }
135
- const results = await this.runQueries(
136
- response.queries,
137
- this.targetConnection.databaseType,
138
- metadata.databaseType,
139
- responseMetadata.runQueryConfig,
140
- );
141
- // QUICK JANKY FIX TO UPDATE METADATA AFTER GETTING MAPPED ARRAYS
142
- if (results.mappedArray && responseMetadata.runQueryConfig?.arrayToMap) {
143
- const arrayToMap = responseMetadata.runQueryConfig.arrayToMap;
144
- results.mappedArray.forEach((array: any, index: number) => {
145
- responseMetadata[arrayToMap.arrayName][index][arrayToMap.field] =
146
- array;
147
- });
148
- delete results.mappedArray;
149
- }
150
- // if there is a single query array in queryResults and the rows and field objects to metadata
151
- if (results?.queryResults.length === 1) {
152
- const queryResults = results.queryResults[0];
153
- if (queryResults.rows) {
154
- responseMetadata.rows = queryResults.rows;
155
- }
156
- if (queryResults.fields) {
157
- responseMetadata.fields = queryResults.fields;
158
- }
159
- }
160
- return {
161
- data: responseMetadata,
162
- queries: results,
163
- status: "success",
164
- };
165
- } catch (err) {
166
- if (metadata.task === "update-view") {
167
- this.postQuill("set-broken-view", {
168
- table: metadata.name,
169
- clientId: metadata.clientId,
170
- error: (err as any).message,
171
- });
172
- }
173
- return {
174
- status: "error",
175
- error: (err as any).message,
176
- data: responseMetadata || {},
177
- };
178
- }
179
- }
180
-
181
- private async runQueries(
182
- queries: any[] | undefined,
183
- pkDatabaseType: "postgresql" | "snowflake" | "bigquery" | "mysql",
184
- databaseType?: string,
185
- runQueryConfig?: AdditionalProcessing,
186
- ) {
187
- let results: any;
188
- if (!queries) return { ...results, queryResults: [] };
189
- if (
190
- databaseType &&
191
- databaseType.toLowerCase() !== pkDatabaseType.toLowerCase()
192
- ) {
193
- return {
194
- dbMismatched: true,
195
- backendDatabaseType: pkDatabaseType,
196
- queryResults: [],
197
- };
198
- }
199
-
200
- if (runQueryConfig?.arrayToMap) {
201
- const mappedArray = await mapQueries(queries, this.targetConnection);
202
- return { ...results, queryResults: [], mappedArray };
203
- } else if (runQueryConfig?.getColumns) {
204
- const queryResult = await this.targetConnection.query(
205
- `${queries[0].replace(/;/, "")} limit 1000`,
206
- );
207
- const columns = queryResult.fields.map((field: any) => {
208
- return {
209
- fieldType: convertTypeToPostgres(field.dataTypeID),
210
- name: field.name,
211
- displayName: field.name,
212
- isVisible: true,
213
- field: field.name,
214
- };
215
- });
216
- return { columns };
217
- } else if (runQueryConfig?.getColumnsForSchema) {
218
- const queryResults = await Promise.all(
219
- queries.map(async (table) => {
220
- if (
221
- !table.viewQuery ||
222
- (!table.isSelectStar && !table.customFieldInfo)
223
- ) {
224
- return table;
225
- }
226
- let limit = "";
227
- if (runQueryConfig.limitBy) {
228
- limit = ` limit ${runQueryConfig.limitBy}`;
229
- }
230
- try {
231
- const queryResult = await this.targetConnection.query(
232
- `${table.viewQuery.replace(/;/, "")} ${limit}`,
233
- );
234
- const columns = queryResult.fields.map((field: any) => {
235
- return {
236
- fieldType: convertTypeToPostgres(field.dataTypeID),
237
- name: field.name,
238
- displayName: field.name,
239
- isVisible: true,
240
- field: field.name,
241
- };
242
- });
243
- return { ...table, columns: columns, rows: queryResult.rows };
244
- } catch (err: any) {
245
- return {
246
- ...table,
247
- error: err.message
248
- ? `Error fetching columns: ${err.message}`
249
- : "Error fetching columns",
250
- };
251
- }
252
- }),
253
- );
254
- results = { ...results, queryResults };
255
- if (runQueryConfig?.fieldsToRemove) {
256
- results = {
257
- ...results,
258
- queryResults: queryResults.map((table: any) => {
259
- const removedColumns = table.columns.filter((column: any) => {
260
- return !runQueryConfig.fieldsToRemove?.includes(column.name);
261
- });
262
- return { ...table, columns: removedColumns };
263
- }),
264
- };
265
- }
266
- } else if (runQueryConfig?.getTables) {
267
- const queryResult = await getTablesBySchemaByDatabase(
268
- this.targetConnection.databaseType,
269
- this.targetConnection.getPool(),
270
- runQueryConfig.schemaNames! || runQueryConfig.schema,
271
- );
272
- const schemaInfo = await getColumnInfoBySchemaByDatabase(
273
- this.targetConnection.databaseType,
274
- this.targetConnection.getPool(),
275
- runQueryConfig.schema!,
276
- queryResult!,
277
- );
278
- return schemaInfo;
279
- } else {
280
- if (runQueryConfig?.limitThousand) {
281
- queries = queries.map((query) => {
282
- return query.replace(/;/, "") + " limit 1000;";
283
- });
284
- } else if (runQueryConfig?.limitBy) {
285
- queries = queries.map((query) => {
286
- return query.replace(/;/, "") + " limit " + runQueryConfig.limitBy;
287
- });
288
- }
289
- const queryResults = await Promise.all(
290
- queries.map(async (query) => {
291
- return await this.targetConnection.query(query);
292
- }),
293
- );
294
- results = { ...results, queryResults };
295
- if (runQueryConfig?.fieldsToRemove) {
296
- results = {
297
- ...results,
298
- queryResults: queryResults.map((queryResult) => {
299
- return removeFields(queryResult, runQueryConfig.fieldsToRemove!);
300
- }),
301
- };
302
- }
303
- if (runQueryConfig?.convertDatatypes) {
304
- results = queryResults.map((result) => {
305
- return {
306
- fields: result.fields.map((field: any) => {
307
- return {
308
- ...field,
309
- fieldType: convertTypeToPostgres(field.dataTypeID),
310
- isVisible: true,
311
- field: field.name,
312
- displayName: field.name,
313
- name: field.name,
314
- };
315
- }),
316
- rows: result.rows,
317
- };
318
- });
319
- }
320
- }
321
- return results;
322
- }
323
-
324
- private async postQuill(
325
- path: string,
326
- payload: any,
327
- ): Promise<QuillClientResponse> {
328
- try {
329
- const response = await axios.post(
330
- `${this.baseUrl}/sdk/${path}`,
331
- payload,
332
- this.config,
333
- );
334
- return response.data;
335
- } catch (e: any) {
336
- return new Promise((_, reject) =>
337
- reject({ message: e?.response?.data?.error || e.message || e }),
338
- );
339
- }
340
- }
341
-
342
- public async [Symbol.asyncDispose](): Promise<void> {
343
- await this.close();
344
- }
345
-
346
- public async close() {
347
- await this.targetConnection.close();
348
- }
349
- }
350
-
351
- const requireQuill = ({
352
- privateKey,
353
- databaseConnectionString,
354
- databaseConfig,
355
- cache,
356
- databaseType,
357
- metadataServerURL,
358
- }: {
359
- privateKey: string;
360
- databaseConnectionString: string;
361
- cache?: Partial<CacheCredentials>;
362
- databaseType: "postgresql" | "snowflake" | "bigquery" | "mysql";
363
- databaseConfig: any;
364
- metadataServerURL?: string;
365
- }) => {
366
- return new Quill({
367
- privateKey,
368
- databaseType,
369
- databaseConnectionString,
370
- databaseConfig,
371
- cache,
372
- metadataServerURL,
373
- });
374
- };
375
-
376
- module.exports = requireQuill;
377
- module.exports.default = requireQuill;
378
- module.exports.withConnection = withConnection;
379
- module.exports.connectToDatabase = connectToDatabase;
380
- module.exports.connectAndRunQuery = connectAndRunQuery;
381
- module.exports.Quill = Quill;
382
- module.exports.getTablesBySchemaByDatabase = getTablesBySchemaByDatabase;
383
- module.exports.getDatabaseCredentials = getDatabaseCredentials;
384
- module.exports.getColumnsByTableByDatabase = getColumnsByTableByDatabase;
385
- module.exports.getForiegnKeysByDatabase = getForiegnKeysByDatabase;
386
- module.exports.getSchemasByDatabase = getSchemasByDatabase;
387
- module.exports.getColumnInfoBySchemaByDatabase =
388
- getColumnInfoBySchemaByDatabase;
389
- module.exports.runQueryByDatabase = runQueryByDatabase;
390
- module.exports.DatabaseType = DatabaseType;
391
-
392
- export { QuillQueryParams as QuillRequest } from "./models/Quill";
@@ -1,18 +0,0 @@
1
- export interface Mappable {
2
- get(key: string): Promise<string | null>;
3
- set(
4
- key: string,
5
- value: string,
6
- type?: string,
7
- ttl?: number,
8
- ): Promise<string | null>;
9
- }
10
-
11
- export interface CacheCredentials {
12
- username: string;
13
- password: string;
14
- host: string;
15
- port: string;
16
- cacheType: string;
17
- ttl?: number;
18
- }
@@ -1,29 +0,0 @@
1
- export interface Client {
2
- name: string;
3
- databaseConnectionString: string;
4
- etlDatabaseConnectionString: string;
5
- stagingDatabaseConnectionString: string;
6
- customerTableTitleFieldName: string;
7
- databaseType: string;
8
- // foreign key
9
- customerFieldName: string;
10
- // native key, ex: uuid
11
- customerTableFieldName: string;
12
- // table with all customers, ex: company_company
13
- customerTableName: string;
14
- customerView: string;
15
- // sql type. ex: INT
16
- customerFieldType: string;
17
- // does db use ssl
18
- useSsl: boolean;
19
- serverCa: string;
20
- clientCert: string;
21
- clientKey: string;
22
- defaultQuery: string;
23
- ignoreDarkMode: boolean;
24
- domainName: string;
25
- hideSqlEditor: boolean;
26
- adminCustomerId: string;
27
- stagingAdminCustomerId: string;
28
- cacheCloudConfig: { type: { cacheQueries: boolean }; default: null };
29
- }
@@ -1,5 +0,0 @@
1
- export interface DatabaseCredentials {
2
- databaseConnectionString: string;
3
- stagingDatabaseConnectionString: string;
4
- databaseType: string;
5
- }
@@ -1,19 +0,0 @@
1
- export type FieldFormat =
2
- | "whole_number"
3
- | "one_decimal_place"
4
- | "two_decimal_places"
5
- | "dollar_amount"
6
- | "MMM_yyyy"
7
- | "MMM_dd_yyyy"
8
- | "MMM_dd-MMM_dd"
9
- | "MMM_dd_hh:mm_ap_pm"
10
- | "hh_ap_pm"
11
- | "percent"
12
- | "string";
13
-
14
- export interface FormattedColumn {
15
- label: string;
16
- field: string;
17
- chartType: string;
18
- format: FieldFormat;
19
- }
@@ -1,82 +0,0 @@
1
- import { CacheCredentials } from "./Cache";
2
- import { DatabaseCredentials } from "./Database";
3
- import { FieldFormat, FormattedColumn } from "./Formats";
4
-
5
- export interface QuillRequestMetadata {
6
- task: string;
7
- // a query to be run
8
- queries?: string[];
9
- preQueries?: string[];
10
- runQueryConfig?: AdditionalProcessing;
11
- query?: string;
12
- // a report to be fetched
13
- id?: string;
14
- filters?: any[];
15
- // dashboard item fields
16
- name?: string;
17
- xAxisField?: string;
18
- yAxisFields?: FormattedColumn[];
19
- xAxisLabel?: string;
20
- xAxisFormat?: FieldFormat;
21
- yAxisLabel?: string;
22
- chartType?: string;
23
- dashboardName?: string;
24
- columns?: FormattedColumn[];
25
- dateField?: { table: string; field: string };
26
- template?: boolean;
27
- clientId?: string;
28
- deleted?: boolean;
29
- databaseType?: string;
30
- }
31
-
32
- export interface QuillQueryParams {
33
- orgId: string;
34
- metadata: QuillRequestMetadata;
35
- environment?: string;
36
- filters?: QuillFilter[];
37
- }
38
-
39
- export interface QuillFilter {
40
- table: string;
41
- field: string;
42
- selectedValue: string;
43
- }
44
-
45
- export interface QuillConfig {
46
- privateKey: string;
47
- db: Partial<DatabaseCredentials>;
48
- cache: Partial<CacheCredentials>;
49
-
50
- /**
51
- * @deprecated Use db credential object instead
52
- */
53
- databaseConnectionString?: string;
54
-
55
- /**
56
- * @deprecated Use db credential object instead
57
- */
58
- stagingDatabaseConnectionString?: string;
59
- }
60
-
61
- export interface AdditionalProcessing {
62
- getSchema?: boolean;
63
- getColumns?: boolean;
64
- getColumnsForSchema?: boolean;
65
- getTables?: boolean;
66
- schema?: string;
67
- schemaNames?: string[];
68
- table?: string;
69
- fieldsToRemove?: string[];
70
- arrayToMap?: { arrayName: string; field: string };
71
- overridePost?: boolean;
72
- convertDatatypes?: boolean;
73
- limitThousand?: boolean;
74
- limitBy?: number;
75
- }
76
-
77
- export interface QuillClientResponse {
78
- queries: string[];
79
- metadata: any;
80
- runQueryConfig: AdditionalProcessing;
81
- error?: string;
82
- }
@@ -1,35 +0,0 @@
1
- export class PgError extends Error {
2
- code?: string;
3
- detail?: string;
4
- hint?: string;
5
- position?: string;
6
- // Add other properties if needed
7
- constructor(
8
- message: string,
9
- detail?: string,
10
- hint?: string,
11
- position?: string,
12
- code?: string,
13
- ) {
14
- super(message);
15
- this.code = code;
16
- this.detail = detail;
17
- this.hint = hint;
18
- this.position = position;
19
- }
20
- }
21
-
22
- export function isSuperset(obj: any, baseClass: any): boolean {
23
- // Get the property names of the base class instance
24
- const baseInstance = new baseClass();
25
- const baseProps = Object.keys(baseInstance);
26
-
27
- // Check if the object has all the properties of the base class
28
- for (const prop of baseProps) {
29
- if (!Object.prototype.hasOwnProperty.call(obj, prop)) {
30
- return false;
31
- }
32
- }
33
-
34
- return true;
35
- }
@@ -1,33 +0,0 @@
1
- import { CachedConnection } from "../db/CachedConnection";
2
-
3
- export interface TableSchemaInfo {
4
- fieldType: string;
5
- name: string;
6
- displayName: string;
7
- isVisible: boolean;
8
- }
9
-
10
- export function removeFields(queryResults: any, fieldsToRemove: string[]): any {
11
- const fields = queryResults.fields.filter(
12
- (field: { name: any }) => !fieldsToRemove.includes(field.name),
13
- );
14
- const rows = queryResults.rows.map((row: any) => {
15
- fieldsToRemove.forEach((field) => {
16
- delete row[field];
17
- });
18
- return row;
19
- });
20
- return { fields, rows };
21
- }
22
-
23
- export async function mapQueries(
24
- queries: string[],
25
- targetConnection: CachedConnection,
26
- ): Promise<any[]> {
27
- const mappedArray = [];
28
- for (let i = 0; i < queries.length; i++) {
29
- const queryResult = await targetConnection.query(queries[i]);
30
- mappedArray.push(queryResult.rows);
31
- }
32
- return mappedArray;
33
- }
@@ -1,11 +0,0 @@
1
- import { PG_TYPES } from "../assets/pgtypes";
2
-
3
- export function convertTypeToPostgres(data_type_id: number): string {
4
- const type = PG_TYPES.find((type) => data_type_id === type.oid)
5
- ? PG_TYPES.find((type) => data_type_id === type.oid)?.typname
6
- : undefined;
7
- if (!type) {
8
- return "varchar";
9
- }
10
- return type;
11
- }
@@ -1,13 +0,0 @@
1
- export function capitalize(text: string): string {
2
- return text.charAt(0).toUpperCase() + text.slice(1);
3
- }
4
-
5
- export function depluralize(text: string): string {
6
- if (text.endsWith("ies")) {
7
- return text.slice(0, -3) + "y";
8
- }
9
- if (text.endsWith("s")) {
10
- return text.slice(0, -1);
11
- }
12
- return text;
13
- }
package/tsconfig.json DELETED
@@ -1,15 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es2016",
4
- "module": "commonjs",
5
- "esModuleInterop": true,
6
- "forceConsistentCasingInFileNames": true,
7
- "strict": true,
8
- "skipLibCheck": true,
9
- "declaration": true,
10
- "outDir": "./dist",
11
- "rootDir": "./src"
12
- },
13
- "include": ["src/**/*.ts"],
14
- "exclude": ["node_modules", "**/*.spec.ts"]
15
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes