@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
@@ -0,0 +1,188 @@
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 { connectToPostgres, disconnectFromPostgres, formatPostgresConfig, getTablesBySchemaPostgres, getColumnsByTablePostgres, runQueryPostgres, getForeignKeysPostgres, getSchemaColumnInfoPostgress, getSchemasPostgres, } from "./Postgres";
11
+ import { connectToSnowflake, disconnectFromSnowflake, formatSnowflakeConfig, getTablesBySchemaSnowflake, getColumnsByTableSnowflake, runQuerySnowflake, getForeignKeysSnowflake, getSchemaColumnInfoSnowflake, getSchemasSnowflake, } from "./Snowflake";
12
+ import { formatBigQueryConfig, connectToBigQuery, runQueryBigQuery, getTablesBySchemaBigQuery, getColumnsByTableBigQuery, getForeignKeysBigQuery, getSchemaColumnInfoBigQuery, getSchemaBigQuery, } from "./BigQuery";
13
+ import { connectToMysql, disconnectFromMysql, formatMysqlConfig, runQueryMysql, getTablesBySchemaMysql, getColumnsByTableMysql, getForeignKeysMysql, getSchemaColumnInfoMysql, getSchemasMysql, } from "./Mysql";
14
+ export function getDatabaseCredentials(databaseType, connectionString) {
15
+ switch (databaseType.toLowerCase()) {
16
+ case "postgres":
17
+ return formatPostgresConfig(connectionString);
18
+ case "postgresql":
19
+ return formatPostgresConfig(connectionString);
20
+ case "snowflake":
21
+ return formatSnowflakeConfig(connectionString);
22
+ case "bigquery":
23
+ return formatBigQueryConfig(connectionString);
24
+ case "mysql":
25
+ return formatMysqlConfig(connectionString);
26
+ default:
27
+ throw new Error("Invalid database type");
28
+ }
29
+ }
30
+ export function connectToDatabase(databaseType, config) {
31
+ switch (databaseType.toLowerCase()) {
32
+ case "postgres":
33
+ return connectToPostgres(config);
34
+ case "postgresql":
35
+ return connectToPostgres(config);
36
+ case "snowflake":
37
+ return connectToSnowflake(config);
38
+ case "bigquery":
39
+ return connectToBigQuery(config);
40
+ case "mysql":
41
+ return connectToMysql(config);
42
+ default:
43
+ return connectToPostgres(config);
44
+ }
45
+ }
46
+ export function withConnection(databaseType, connectionString, callback) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const config = getDatabaseCredentials(databaseType, connectionString);
49
+ const connection = connectToDatabase(databaseType, config);
50
+ try {
51
+ return yield callback(connection);
52
+ }
53
+ catch (e) {
54
+ return new Promise((_, reject) => reject({ success: false, message: e.message || e.error || e }));
55
+ }
56
+ finally {
57
+ yield disconnectFromDatabase(databaseType, connection);
58
+ }
59
+ });
60
+ }
61
+ export function runQueryByDatabase(databaseType, connection, sql) {
62
+ switch (databaseType.toLowerCase()) {
63
+ case "postgres":
64
+ return runQueryPostgres(sql, connection);
65
+ case "postgresql":
66
+ return runQueryPostgres(sql, connection);
67
+ case "snowflake":
68
+ return runQuerySnowflake(sql, connection);
69
+ case "bigquery":
70
+ return runQueryBigQuery(sql, connection);
71
+ case "mysql":
72
+ return runQueryMysql(sql, connection);
73
+ default:
74
+ return undefined;
75
+ }
76
+ }
77
+ export function connectAndRunQuery(databaseType, connectionString, sql) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ return withConnection(databaseType, connectionString, (connection) => __awaiter(this, void 0, void 0, function* () { return yield runQueryByDatabase(databaseType, connection, sql); }));
80
+ });
81
+ }
82
+ export function disconnectFromDatabase(databaseType, database) {
83
+ switch (databaseType.toLowerCase()) {
84
+ case "postgres":
85
+ return disconnectFromPostgres(database);
86
+ case "postgresql":
87
+ return disconnectFromPostgres(database);
88
+ case "snowflake":
89
+ return disconnectFromSnowflake(database);
90
+ case "bigquery":
91
+ return; // BigQuery does not need to be disconnected
92
+ case "mysql":
93
+ return disconnectFromMysql(database);
94
+ default:
95
+ return undefined;
96
+ }
97
+ }
98
+ export function getSchemasByDatabase(databaseType, connection) {
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ switch (databaseType.toLowerCase()) {
101
+ case "postgres":
102
+ return getSchemasPostgres(connection);
103
+ case "postgresql":
104
+ return getSchemasPostgres(connection);
105
+ case "snowflake":
106
+ return getSchemasSnowflake(connection);
107
+ case "bigquery":
108
+ return getSchemaBigQuery(connection);
109
+ case "mysql":
110
+ return getSchemasMysql(connection);
111
+ default:
112
+ return undefined;
113
+ }
114
+ });
115
+ }
116
+ // INFORMATION SCHEMA SELECTS
117
+ export function getTablesBySchemaByDatabase(databaseType, connection, schemaName) {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ switch (databaseType.toLowerCase()) {
120
+ case "postgres":
121
+ return getTablesBySchemaPostgres(connection, schemaName);
122
+ case "postgresql":
123
+ return getTablesBySchemaPostgres(connection, schemaName);
124
+ case "snowflake":
125
+ return getTablesBySchemaSnowflake(connection, schemaName);
126
+ case "bigquery":
127
+ return getTablesBySchemaBigQuery(connection, schemaName);
128
+ case "mysql":
129
+ return getTablesBySchemaMysql(connection, schemaName);
130
+ default:
131
+ return undefined;
132
+ }
133
+ });
134
+ }
135
+ // INFORMATION SCHEMA SELECTS
136
+ export function getColumnsByTableByDatabase(databaseType, connection, schemaName, tableName) {
137
+ return __awaiter(this, void 0, void 0, function* () {
138
+ switch (databaseType.toLowerCase()) {
139
+ case "postgres":
140
+ return getColumnsByTablePostgres(connection, schemaName, tableName);
141
+ case "postgresql":
142
+ return getColumnsByTablePostgres(connection, schemaName, tableName);
143
+ case "snowflake":
144
+ return getColumnsByTableSnowflake(connection, schemaName, tableName);
145
+ case "bigquery":
146
+ return getColumnsByTableBigQuery(connection, schemaName, tableName);
147
+ case "mysql":
148
+ return getColumnsByTableMysql(connection, schemaName, tableName);
149
+ default:
150
+ return undefined;
151
+ }
152
+ });
153
+ }
154
+ export function getForiegnKeysByDatabase(databaseType, connection, schemaName, tableName, primaryKey) {
155
+ return __awaiter(this, void 0, void 0, function* () {
156
+ switch (databaseType.toLowerCase()) {
157
+ case "postgres":
158
+ return getForeignKeysPostgres(connection, schemaName, tableName, primaryKey);
159
+ case "postgresql":
160
+ return getForeignKeysPostgres(connection, schemaName, tableName, primaryKey);
161
+ case "snowflake":
162
+ return getForeignKeysSnowflake(connection, schemaName, tableName, primaryKey);
163
+ case "bigquery":
164
+ return getForeignKeysBigQuery(connection, schemaName, tableName, primaryKey);
165
+ case "mysql":
166
+ return getForeignKeysMysql(connection, schemaName, tableName, primaryKey);
167
+ default:
168
+ return undefined;
169
+ }
170
+ });
171
+ }
172
+ export function getColumnInfoBySchemaByDatabase(databaseType, connection, schemaName, tables) {
173
+ switch (databaseType.toLowerCase()) {
174
+ case "postgres":
175
+ return getSchemaColumnInfoPostgress(connection, schemaName, tables);
176
+ case "postgresql":
177
+ return getSchemaColumnInfoPostgress(connection, schemaName, tables);
178
+ case "snowflake":
179
+ return getSchemaColumnInfoSnowflake(connection, schemaName, tables);
180
+ case "bigquery":
181
+ return getSchemaColumnInfoBigQuery(connection, schemaName, tables);
182
+ case "mysql":
183
+ return getSchemaColumnInfoMysql(connection, schemaName, tables);
184
+ default:
185
+ return undefined;
186
+ }
187
+ }
188
+ //# sourceMappingURL=DatabaseHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseHelper.js","sourceRoot":"","sources":["../../../src/db/DatabaseHelper.ts"],"names":[],"mappings":";;;;;;;;;AAIA,OAAO,EAEL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EAEpB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,GAChB,MAAM,SAAS,CAAC;AAcjB,MAAM,UAAU,sBAAsB,CACpC,YAA+D,EAC/D,gBAAwB;IAMxB,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,UAAU;YACb,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAChD,KAAK,YAAY;YACf,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAChD,KAAK,WAAW;YACd,OAAO,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QACjD,KAAK,UAAU;YACb,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAChD,KAAK,OAAO;YACV,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAC7C;YACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAA+D,EAC/D,MAIyB;IAEzB,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,UAAU;YACb,OAAO,iBAAiB,CAAC,MAAkC,CAAC,CAAC;QAC/D,KAAK,YAAY;YACf,OAAO,iBAAiB,CAAC,MAAkC,CAAC,CAAC;QAC/D,KAAK,WAAW;YACd,OAAO,kBAAkB,CAAC,MAAmC,CAAC,CAAC;QACjE,KAAK,UAAU;YACb,OAAO,iBAAiB,CAAC,MAAwB,CAAC,CAAC;QACrD,KAAK,OAAO;YACV,OAAO,cAAc,CAAC,MAA+B,CAAC,CAAC;QACzD;YACE,OAAO,iBAAiB,CAAC,MAAkC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,MAAM,UAAgB,cAAc,CAClC,YAA+D,EAC/D,gBAAwB,EACxB,QAA+C;;QAE/C,MAAM,MAAM,GAAG,sBAAsB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAC/D,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,sBAAsB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CAAA;AAED,MAAM,UAAU,kBAAkB,CAChC,YAA+D,EAC/D,UAA8B,EAC9B,GAAW;IAEX,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,UAAkB,CAAC,CAAC;QACnD,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,GAAG,EAAE,UAAkB,CAAC,CAAC;QACnD,KAAK,WAAW;YACd,OAAO,iBAAiB,CAAC,GAAG,EAAE,UAAkC,CAAC,CAAC;QACpE,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,GAAG,EAAE,UAAsB,CAAC,CAAC;QACvD,KAAK,OAAO;YACV,OAAO,aAAa,CAAC,GAAG,EAAE,UAAuB,CAAC,CAAC;QACrD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAgB,kBAAkB,CACtC,YAA+D,EAC/D,gBAAwB,EACxB,GAAW;;QAEX,OAAO,cAAc,CACnB,YAAY,EACZ,gBAAgB,EAChB,CAAO,UAAU,EAAE,EAAE,gDACnB,OAAA,MAAM,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA,GAAA,CAC1D,CAAC;IACJ,CAAC;CAAA;AAED,MAAM,UAAU,sBAAsB,CACpC,YAA+D,EAC/D,QAA4B;IAE5B,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,UAAU;YACb,OAAO,sBAAsB,CAAC,QAAgB,CAAC,CAAC;QAClD,KAAK,YAAY;YACf,OAAO,sBAAsB,CAAC,QAAgB,CAAC,CAAC;QAClD,KAAK,WAAW;YACd,OAAO,uBAAuB,CAAC,QAAgC,CAAC,CAAC;QACnE,KAAK,UAAU;YACb,OAAO,CAAC,4CAA4C;QACtD,KAAK,OAAO;YACV,OAAO,mBAAmB,CAAC,QAAqB,CAAC,CAAC;QACpD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAgB,oBAAoB,CACxC,YAA+D,EAC/D,UAA8B;;QAE9B,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,KAAK,UAAU;gBACb,OAAO,kBAAkB,CAAC,UAAkB,CAAC,CAAC;YAChD,KAAK,YAAY;gBACf,OAAO,kBAAkB,CAAC,UAAkB,CAAC,CAAC;YAChD,KAAK,WAAW;gBACd,OAAO,mBAAmB,CAAC,UAAkC,CAAC,CAAC;YACjE,KAAK,UAAU;gBACb,OAAO,iBAAiB,CAAC,UAAsB,CAAC,CAAC;YACnD,KAAK,OAAO;gBACV,OAAO,eAAe,CAAC,UAAuB,CAAC,CAAC;YAClD;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;CAAA;AAED,6BAA6B;AAC7B,MAAM,UAAgB,2BAA2B,CAC/C,YAA+D,EAC/D,UAA8B,EAC9B,UAA6B;;QAE7B,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,KAAK,UAAU;gBACb,OAAO,yBAAyB,CAC9B,UAAkB,EAClB,UAAsB,CACvB,CAAC;YACJ,KAAK,YAAY;gBACf,OAAO,yBAAyB,CAC9B,UAAkB,EAClB,UAAsB,CACvB,CAAC;YACJ,KAAK,WAAW;gBACd,OAAO,0BAA0B,CAC/B,UAAkC,EAClC,UAAsB,CACvB,CAAC;YACJ,KAAK,UAAU;gBACb,OAAO,yBAAyB,CAC9B,UAAsB,EACtB,UAAsB,CACvB,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO,sBAAsB,CAC3B,UAAuB,EACvB,UAAsB,CACvB,CAAC;YACJ;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;CAAA;AAED,6BAA6B;AAC7B,MAAM,UAAgB,2BAA2B,CAC/C,YAA+D,EAC/D,UAA8B,EAC9B,UAAkB,EAClB,SAAiB;;QAEjB,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,KAAK,UAAU;gBACb,OAAO,yBAAyB,CAC9B,UAAkB,EAClB,UAAU,EACV,SAAS,CACV,CAAC;YACJ,KAAK,YAAY;gBACf,OAAO,yBAAyB,CAC9B,UAAkB,EAClB,UAAU,EACV,SAAS,CACV,CAAC;YACJ,KAAK,WAAW;gBACd,OAAO,0BAA0B,CAC/B,UAAkC,EAClC,UAAU,EACV,SAAS,CACV,CAAC;YACJ,KAAK,UAAU;gBACb,OAAO,yBAAyB,CAC9B,UAAsB,EACtB,UAAU,EACV,SAAS,CACV,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO,sBAAsB,CAC3B,UAAuB,EACvB,UAAU,EACV,SAAS,CACV,CAAC;YACJ;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;CAAA;AAED,MAAM,UAAgB,wBAAwB,CAC5C,YAA+D,EAC/D,UAA8B,EAC9B,UAAkB,EAClB,SAAiB,EACjB,UAAkB;;QAElB,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,KAAK,UAAU;gBACb,OAAO,sBAAsB,CAC3B,UAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,CACX,CAAC;YACJ,KAAK,YAAY;gBACf,OAAO,sBAAsB,CAC3B,UAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,CACX,CAAC;YACJ,KAAK,WAAW;gBACd,OAAO,uBAAuB,CAC5B,UAAkC,EAClC,UAAU,EACV,SAAS,EACT,UAAU,CACX,CAAC;YACJ,KAAK,UAAU;gBACb,OAAO,sBAAsB,CAC3B,UAAsB,EACtB,UAAU,EACV,SAAS,EACT,UAAU,CACX,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO,mBAAmB,CACxB,UAAuB,EACvB,UAAU,EACV,SAAS,EACT,UAAU,CACX,CAAC;YACJ;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;CAAA;AAED,MAAM,UAAU,+BAA+B,CAC7C,YAA+D,EAC/D,UAA8B,EAC9B,UAAkB,EAClB,MAA8D;IAE9D,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,UAAU;YACb,OAAO,4BAA4B,CACjC,UAAkB,EAClB,UAAU,EACV,MAAqD,CACtD,CAAC;QACJ,KAAK,YAAY;YACf,OAAO,4BAA4B,CACjC,UAAkB,EAClB,UAAU,EACV,MAAqD,CACtD,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,4BAA4B,CACjC,UAAkC,EAClC,UAAU,EACV,MAAqD,CACtD,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,2BAA2B,CAChC,UAAsB,EACtB,UAAU,EACV,MAAqD,CACtD,CAAC;QACJ,KAAK,OAAO;YACV,OAAO,wBAAwB,CAC7B,UAAuB,EACvB,UAAU,EACV,MAAqD,CACtD,CAAC;QACJ;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Pool as MysqlPool } from "mysql2";
2
+ import { QuillQueryResults } from "./DatabaseHelper";
3
+ export interface MysqlConnectionConfig {
4
+ host: string;
5
+ user: string;
6
+ password: string;
7
+ database: string;
8
+ port: number;
9
+ }
10
+ export declare function formatMysqlConfig(connectionString: string): MysqlConnectionConfig;
11
+ export declare function connectToMysql(config: MysqlConnectionConfig): MysqlPool;
12
+ export declare function disconnectFromMysql(connection: MysqlPool): void;
13
+ export declare function runQueryMysql(sql: string, connection: MysqlPool): Promise<QuillQueryResults>;
14
+ export declare function getSchemasMysql(connection: MysqlPool): Promise<string[]>;
15
+ export declare function getTablesBySchemaMysql(connection: MysqlPool, schemaNames: string[]): Promise<{
16
+ tableName: string;
17
+ schemaName: string;
18
+ }[]>;
19
+ export declare function getColumnsByTableMysql(connection: MysqlPool, schemaName: string, tableName: string): Promise<string[]>;
20
+ export declare function getForeignKeysMysql(connection: MysqlPool, schemaName: string, tableName: string, primaryKey: string): Promise<string[]>;
21
+ export declare function getSchemaColumnInfoMysql(connection: MysqlPool, schemaName: string, tableNames: {
22
+ tableName: string;
23
+ schemaName: string;
24
+ }[]): Promise<{
25
+ tableName: string;
26
+ columns: {
27
+ columnName: string;
28
+ dataTypeID: number;
29
+ }[];
30
+ }[]>;
@@ -0,0 +1,219 @@
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 mysql from "mysql2";
11
+ import url from "url";
12
+ import { capitalize, depluralize } from "../utils/textProcessing";
13
+ export function formatMysqlConfig(connectionString) {
14
+ const parsedUrl = url.parse(connectionString);
15
+ const [user, password] = (parsedUrl.auth || "").split(":");
16
+ return {
17
+ host: parsedUrl.hostname || "",
18
+ user: user || "",
19
+ password: password || "",
20
+ database: (parsedUrl.pathname || "").slice(1),
21
+ port: parsedUrl.port ? parseInt(parsedUrl.port) : 3306,
22
+ };
23
+ }
24
+ export function connectToMysql(config) {
25
+ const pool = mysql.createPool(Object.assign(Object.assign({}, config), { waitForConnections: true, connectionLimit: 24, queueLimit: 0 }));
26
+ return pool;
27
+ }
28
+ export function disconnectFromMysql(connection) {
29
+ connection.end();
30
+ }
31
+ export function runQueryMysql(sql, connection) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ const result = yield new Promise((resolve, reject) => {
34
+ connection.query(sql, (error, results, fields) => {
35
+ if (error) {
36
+ reject(error);
37
+ return;
38
+ }
39
+ const mappedFields = fields
40
+ ? fields.map((field) => ({
41
+ name: field.name,
42
+ dataTypeID: mysqlDataTypeIdToPostgresType(field.type || 1043), // Provide a default value for dataTypeID
43
+ }))
44
+ : [];
45
+ const processRows = Array.isArray(results)
46
+ ? results.map((row) => {
47
+ return JSON.parse(JSON.stringify(row));
48
+ })
49
+ : [];
50
+ resolve({ fields: mappedFields, rows: processRows });
51
+ });
52
+ });
53
+ return result;
54
+ });
55
+ }
56
+ export function getSchemasMysql(connection) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ const sql = `SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
59
+ WHERE schema_name != 'information_schema'
60
+ AND schema_name != 'performance_schema'
61
+ and schema_name != 'sys';`;
62
+ const results = yield runQueryMysql(sql, connection);
63
+ return results.rows.map((row) => row.SCHEMA_NAME);
64
+ });
65
+ }
66
+ export function getTablesBySchemaMysql(connection, schemaNames) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ const allColumns = yield Promise.all(schemaNames.map((schema) => __awaiter(this, void 0, void 0, function* () {
69
+ const sql = `SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '${schema}'`;
70
+ const results = yield runQueryMysql(sql, connection);
71
+ return results.rows.map((row) => {
72
+ return { tableName: row.TABLE_NAME, schemaName: row.TABLE_SCHEMA };
73
+ });
74
+ })));
75
+ return allColumns.flat();
76
+ });
77
+ }
78
+ export function getColumnsByTableMysql(connection, schemaName, tableName) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ const sql = `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '${schemaName}' AND TABLE_NAME = '${tableName}'`;
81
+ const results = yield runQueryMysql(sql, connection);
82
+ return results.rows.map((row) => row.COLUMN_NAME);
83
+ });
84
+ }
85
+ export function getForeignKeysMysql(connection, schemaName, tableName, primaryKey) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ const depluralizedTableName = depluralize(tableName);
88
+ let sql = `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
89
+ WHERE TABLE_SCHEMA = '${schemaName}'
90
+ and table_name != '${tableName}'
91
+ and (column_name = '${primaryKey}'
92
+ or column_name = '${depluralizedTableName}\\_${primaryKey}'
93
+ or column_name = '${depluralizedTableName}${capitalize(primaryKey)}' )`;
94
+ const results = yield runQueryMysql(sql, connection);
95
+ let foreignKeysString = results.rows.map((key) => {
96
+ return key.COLUMN_NAME;
97
+ });
98
+ // remove any foreignKeyStrings that are just 'id'
99
+ foreignKeysString = foreignKeysString.filter((key) => key !== "id" && key !== "_id_");
100
+ foreignKeysString = [...new Set(foreignKeysString)];
101
+ if (foreignKeysString.length === 0) {
102
+ sql = `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
103
+ WHERE TABLE_SCHEMA = '${schemaName}'
104
+ and table_name != '${tableName}'
105
+ and (column_name like '${depluralizedTableName}%'
106
+ or column_name like '%\\_id'
107
+ or column_name like '%Id'
108
+ or column_name like '%\\_${primaryKey}'
109
+ or column_name like '%${capitalize(primaryKey)}')`;
110
+ const results = yield runQueryMysql(sql, connection);
111
+ foreignKeysString = results.rows.map((key) => {
112
+ return key.COLUMN_NAME;
113
+ });
114
+ foreignKeysString = [...new Set(foreignKeysString)];
115
+ }
116
+ return foreignKeysString;
117
+ });
118
+ }
119
+ export function getSchemaColumnInfoMysql(connection, schemaName, tableNames) {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ const allColumns = yield Promise.all(tableNames.map((tableName) => __awaiter(this, void 0, void 0, function* () {
122
+ const query = `
123
+ SELECT COLUMN_NAME as columnName,
124
+ DATA_TYPE as dataType FROM INFORMATION_SCHEMA.COLUMNS
125
+ WHERE TABLE_SCHEMA = '${tableName.schemaName}'
126
+ AND TABLE_NAME = '${tableName.tableName}'
127
+ `;
128
+ const results = yield runQueryMysql(query, connection);
129
+ return {
130
+ tableName: `${tableName.schemaName}.${tableName.tableName}`,
131
+ displayName: `${tableName.schemaName}.${tableName.tableName}`,
132
+ columns: results.rows.map((row) => ({
133
+ columnName: row.columnName,
134
+ displayName: row.columnName,
135
+ dataTypeID: mysqlTextDataTypeToPostgresOID(row.dataType),
136
+ fieldType: row.dataType,
137
+ })),
138
+ };
139
+ })));
140
+ return allColumns;
141
+ });
142
+ }
143
+ function mysqlTextDataTypeToPostgresOID(type) {
144
+ switch (type) {
145
+ case "bigint": // BIGINT in MySQL
146
+ return 20; // BIGINT in PostgreSQL
147
+ case "tinyint": // TINYINT in MySQL
148
+ return 21; // SMALLINT in PostgreSQL
149
+ case "smallint": // SMALLINT in MySQL
150
+ return 21; // SMALLINT in PostgreSQL
151
+ case "int": // INT in MySQL
152
+ return 23; // INTEGER in PostgreSQL
153
+ case "float": // FLOAT in MySQL
154
+ return 701; // DOUBLE PRECISION in PostgreSQL
155
+ case "double": // DOUBLE in MySQL
156
+ return 701; // DOUBLE PRECISION in PostgreSQL
157
+ case "varchar": // VARCHAR in MySQL
158
+ return 1043; // VARCHAR in PostgreSQL
159
+ case "char": // CHAR in MySQL
160
+ return 1042; // CHAR in PostgreSQL
161
+ case "timestamp": // TIMESTAMP in MySQL
162
+ return 1114; // TIMESTAMP in PostgreSQL
163
+ case "date": // DATE in MySQL
164
+ return 1082; // DATE in PostgreSQL
165
+ case "datetime": // DATETIME in MySQL
166
+ return 1114; // TIMESTAMP in PostgreSQL
167
+ case "time": // TIME in MySQL
168
+ return 1083; // TIME in PostgreSQL
169
+ case "year": // YEAR in MySQL
170
+ return 23; // INTEGER in PostgreSQL
171
+ case "binary": // BINARY in MySQL
172
+ return 17; // BYTEA in PostgreSQL
173
+ case "blob": // BLOB in MySQL
174
+ return 17; // BYTEA in PostgreSQL
175
+ case "text": // TEXT in MySQL
176
+ return 25; // TEXT in PostgreSQL
177
+ case "json": // JSON in MySQL
178
+ return 114; // JSON in PostgreSQL
179
+ default:
180
+ return 1043; // VARCHAR in PostgreSQL (fallback)
181
+ }
182
+ }
183
+ function mysqlDataTypeIdToPostgresType(type) {
184
+ switch (type) {
185
+ case 0: // DECIMAL
186
+ case 1: // TINY
187
+ case 2: // SHORT
188
+ case 3: // LONG
189
+ case 8: // LONGLONG
190
+ case 9: // INT24
191
+ case 13: // YEAR
192
+ return 23; // INTEGER
193
+ case 4: // FLOAT
194
+ case 5: // DOUBLE
195
+ return 701; // DOUBLE PRECISION
196
+ case 7: // TIMESTAMP
197
+ case 12: // DATETIME
198
+ return 1114; // TIMESTAMP
199
+ case 10: // DATE
200
+ case 242: // NEWDATE
201
+ return 1082; // DATE
202
+ case 15: // VARCHAR
203
+ case 25: // VAR_STRING
204
+ case 250: // STRING
205
+ case 254: // ENUM
206
+ case 255: // SET
207
+ return 1043; // VARCHAR
208
+ case 16: // BIT
209
+ case 245: // TINY_BLOB
210
+ case 246: // MEDIUM_BLOB
211
+ case 247: // LONG_BLOB
212
+ case 248: // BLOB
213
+ case 251: // GEOMETRY
214
+ return 17; // BYTEA
215
+ default:
216
+ return 1043; // Default to VARCHAR if unknown
217
+ }
218
+ }
219
+ //# sourceMappingURL=Mysql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mysql.js","sourceRoot":"","sources":["../../../src/db/Mysql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { Pool } from "pg";
2
+ import { QuillQueryResults } from "./DatabaseHelper";
3
+ export type PostgresConnectionConfig = {
4
+ connectionString: string;
5
+ ssl?: {
6
+ rejectUnauthorized: false;
7
+ ca?: string;
8
+ key?: string;
9
+ cert?: string;
10
+ };
11
+ };
12
+ export declare function connectToPostgres(config: PostgresConnectionConfig): Pool;
13
+ export declare function disconnectFromPostgres(pool: Pool): void;
14
+ export declare function runQueryPostgres(sql: string, pool: Pool): Promise<QuillQueryResults>;
15
+ export declare function getSchemasPostgres(pool: Pool): Promise<string[]>;
16
+ export declare function getTablesBySchemaPostgres(pool: Pool, schemaNames: string[]): Promise<{
17
+ tableName: string;
18
+ schemaName: string;
19
+ }[]>;
20
+ export declare function getColumnsByTablePostgres(pool: Pool, schemaName: string, tableName: string): Promise<string[]>;
21
+ export declare function getForeignKeysPostgres(pool: Pool, schemaName: string, tableName: string, primaryKey: string): Promise<string[]>;
22
+ export declare function getSchemaColumnInfoPostgress(pool: Pool, schemaName: string, tableNames: {
23
+ tableName: string;
24
+ schemaName: string;
25
+ }[]): Promise<{
26
+ tableName: string;
27
+ columns: {
28
+ columnName: string;
29
+ dataTypeID: number;
30
+ }[];
31
+ }[]>;
32
+ export declare function formatPostgresConfig(connectionString: string): PostgresConnectionConfig;
@@ -0,0 +1,161 @@
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 { Pool, types } from "pg";
11
+ import { capitalize, depluralize } from "../utils/textProcessing";
12
+ import { PG_TYPES } from "../assets/pgtypes";
13
+ // Parse type TIMESTAMP WITHOUT TIME ZONE as string so it doesn't get converted to a Date object
14
+ types.setTypeParser(1114, function (val) {
15
+ return val;
16
+ });
17
+ export function connectToPostgres(config) {
18
+ return new Pool(config);
19
+ }
20
+ export function disconnectFromPostgres(pool) {
21
+ pool.end();
22
+ }
23
+ export function runQueryPostgres(sql, pool) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const results = yield pool.query(sql);
26
+ return {
27
+ fields: results.fields.map((field) => ({
28
+ name: field.name,
29
+ dataTypeID: field.dataTypeID,
30
+ })),
31
+ rows: results.rows,
32
+ };
33
+ });
34
+ }
35
+ export function getSchemasPostgres(pool) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ const sql = `SELECT schema_name FROM information_schema.schemata
38
+ WHERE schema_name NOT LIKE 'pg_%' AND schema_name != 'information_schema';`;
39
+ const results = yield runQueryPostgres(sql, pool);
40
+ return results.rows.map((row) => row.schema_name);
41
+ });
42
+ }
43
+ export function getTablesBySchemaPostgres(pool, schemaNames) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const allColumns = yield Promise.all(schemaNames.map((schema) => __awaiter(this, void 0, void 0, function* () {
46
+ const sql = `SELECT table_name, table_schema FROM information_schema.tables WHERE table_schema = '${schema}'`;
47
+ const results = yield runQueryPostgres(sql, pool);
48
+ return results.rows.map((row) => {
49
+ return { tableName: row.table_name, schemaName: row.table_schema };
50
+ });
51
+ })));
52
+ return allColumns.flat();
53
+ });
54
+ }
55
+ export function getColumnsByTablePostgres(pool, schemaName, tableName) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ const sql = `SELECT column_name FROM information_schema.columns WHERE table_schema = '${schemaName}' and table_name = '${tableName}'`;
58
+ const results = yield runQueryPostgres(sql, pool);
59
+ return results.rows.map((row) => row.column_name);
60
+ });
61
+ }
62
+ export function getForeignKeysPostgres(pool, schemaName, tableName, primaryKey) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ const depluralizedTableName = depluralize(tableName);
65
+ let sql = `SELECT column_name FROM information_schema.columns
66
+ WHERE table_schema = '${schemaName}'
67
+ and table_name != '${tableName}'
68
+ and (column_name = '${primaryKey}'
69
+ or column_name = '${depluralizedTableName}_${primaryKey}'
70
+ or column_name = '${depluralizedTableName}${capitalize(primaryKey)}')`;
71
+ const results = yield runQueryPostgres(sql, pool);
72
+ let foreignKeysString = results.rows.map((key) => {
73
+ return key.column_name;
74
+ });
75
+ foreignKeysString = foreignKeysString.filter((key) => key !== "id" && key !== "_id_");
76
+ foreignKeysString = [...new Set(foreignKeysString)];
77
+ if (foreignKeysString.length === 0) {
78
+ sql = `SELECT column_name FROM information_schema.columns
79
+ WHERE table_schema = '${schemaName}'
80
+ and table_name != '${tableName}'
81
+ and (column_name like '${tableName}%'
82
+ or column_name like '%\\_id'
83
+ or column_name like '%Id'
84
+ or column_name like '%\\_${primaryKey}'
85
+ or column_name like '%${capitalize(primaryKey)}')`;
86
+ const results = yield runQueryPostgres(sql, pool);
87
+ foreignKeysString = results.rows.map((key) => {
88
+ return key.column_name;
89
+ });
90
+ foreignKeysString = [...new Set(foreignKeysString)];
91
+ }
92
+ return foreignKeysString;
93
+ });
94
+ }
95
+ export function getSchemaColumnInfoPostgress(pool, schemaName, tableNames) {
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ const allColumns = yield Promise.all(tableNames.map((tableName) => __awaiter(this, void 0, void 0, function* () {
98
+ const query = `
99
+ SELECT column_name as "columnName", udt_name as "fieldType"
100
+ FROM information_schema.columns
101
+ WHERE table_schema = '${tableName.schemaName}'
102
+ AND table_name = '${tableName.tableName}'
103
+ ORDER BY ordinal_position;
104
+ `;
105
+ const results = yield runQueryPostgres(query, pool);
106
+ return {
107
+ tableName: `${tableName.schemaName}.${tableName.tableName}`,
108
+ displayName: `${tableName.schemaName}.${tableName.tableName}`,
109
+ columns: results.rows.map((row) => {
110
+ var _a;
111
+ let pgType = (_a = PG_TYPES.find((pgType) => {
112
+ return pgType.typname === row.fieldType;
113
+ })) === null || _a === void 0 ? void 0 : _a.oid;
114
+ if (!pgType) {
115
+ pgType = 1043;
116
+ }
117
+ return {
118
+ columnName: row.columnName,
119
+ displayName: row.columnName,
120
+ dataTypeID: pgType,
121
+ fieldType: row.fieldType,
122
+ };
123
+ }),
124
+ };
125
+ })));
126
+ return allColumns;
127
+ });
128
+ }
129
+ export function formatPostgresConfig(connectionString) {
130
+ return { connectionString, ssl: { rejectUnauthorized: false } };
131
+ }
132
+ // CURRENTLY UNUSED BUT MAYBE USEFUL IN THE FUTURE
133
+ // function getSslConfig(client: Client):
134
+ // | {
135
+ // rejectUnauthorized: false;
136
+ // ca?: string;
137
+ // key?: string;
138
+ // cert?: string;
139
+ // }
140
+ // | undefined {
141
+ // if (!client.useSsl) {
142
+ // return undefined;
143
+ // }
144
+ // if (client.serverCa && client.clientKey && client.clientCert) {
145
+ // return {
146
+ // rejectUnauthorized: false,
147
+ // ca: client.serverCa,
148
+ // key: client.clientKey,
149
+ // cert: client.clientCert,
150
+ // };
151
+ // }
152
+ // if (client.serverCa) {
153
+ // return {
154
+ // rejectUnauthorized: false,
155
+ // ca: client.serverCa,
156
+ // };
157
+ // }
158
+ // // if using ssl with no certificates
159
+ // return { rejectUnauthorized: false };
160
+ // }
161
+ //# sourceMappingURL=Postgres.js.map