@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.
- package/dist/{assets → cjs/assets}/pgtypes.js +1 -0
- package/dist/cjs/assets/pgtypes.js.map +1 -0
- package/dist/{clients → cjs/clients}/QuillServerClient.js +1 -0
- package/dist/cjs/clients/QuillServerClient.js.map +1 -0
- package/dist/{db → cjs/db}/BigQuery.js +1 -0
- package/dist/cjs/db/BigQuery.js.map +1 -0
- package/dist/{db → cjs/db}/CachedConnection.js +1 -0
- package/dist/cjs/db/CachedConnection.js.map +1 -0
- package/dist/{db → cjs/db}/DatabaseHelper.js +1 -0
- package/dist/cjs/db/DatabaseHelper.js.map +1 -0
- package/dist/{db → cjs/db}/Mysql.js +1 -0
- package/dist/cjs/db/Mysql.js.map +1 -0
- package/dist/{db → cjs/db}/Postgres.js +1 -0
- package/dist/cjs/db/Postgres.js.map +1 -0
- package/dist/{db → cjs/db}/Snowflake.js +1 -0
- package/dist/cjs/db/Snowflake.js.map +1 -0
- package/dist/{index.ispec.js → cjs/index.ispec.js} +1 -0
- package/dist/cjs/index.ispec.js.map +1 -0
- package/dist/{index.js → cjs/index.js} +2 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/{index.uspec.js → cjs/index.uspec.js} +1 -0
- package/dist/cjs/index.uspec.js.map +1 -0
- package/dist/{models → cjs/models}/Cache.js +1 -0
- package/dist/cjs/models/Cache.js.map +1 -0
- package/dist/{models → cjs/models}/Client.js +1 -0
- package/dist/cjs/models/Client.js.map +1 -0
- package/dist/{models → cjs/models}/Database.js +1 -0
- package/dist/cjs/models/Database.js.map +1 -0
- package/dist/cjs/models/Filters.d.ts +117 -0
- package/dist/cjs/models/Filters.js +100 -0
- package/dist/cjs/models/Filters.js.map +1 -0
- package/dist/{models → cjs/models}/Formats.js +1 -0
- package/dist/cjs/models/Formats.js.map +1 -0
- package/dist/{models → cjs/models}/Quill.d.ts +2 -6
- package/dist/{models → cjs/models}/Quill.js +1 -0
- package/dist/cjs/models/Quill.js.map +1 -0
- package/dist/{utils → cjs/utils}/Error.js +1 -0
- package/dist/cjs/utils/Error.js.map +1 -0
- package/dist/{utils → cjs/utils}/RunQueryProcesses.js +1 -0
- package/dist/cjs/utils/RunQueryProcesses.js.map +1 -0
- package/dist/{utils → cjs/utils}/schemaConversion.js +1 -0
- package/dist/cjs/utils/schemaConversion.js.map +1 -0
- package/dist/{utils → cjs/utils}/textProcessing.js +1 -0
- package/dist/cjs/utils/textProcessing.js.map +1 -0
- package/dist/esm/assets/pgtypes.d.ts +4 -0
- package/dist/esm/assets/pgtypes.js +2783 -0
- package/dist/esm/assets/pgtypes.js.map +1 -0
- package/dist/esm/clients/QuillServerClient.d.ts +8 -0
- package/dist/esm/clients/QuillServerClient.js +24 -0
- package/dist/esm/clients/QuillServerClient.js.map +1 -0
- package/dist/esm/db/BigQuery.d.ts +27 -0
- package/dist/esm/db/BigQuery.js +201 -0
- package/dist/esm/db/BigQuery.js.map +1 -0
- package/dist/esm/db/CachedConnection.d.ts +23 -0
- package/dist/esm/db/CachedConnection.js +80 -0
- package/dist/esm/db/CachedConnection.js.map +1 -0
- package/dist/esm/db/DatabaseHelper.d.ts +50 -0
- package/dist/esm/db/DatabaseHelper.js +188 -0
- package/dist/esm/db/DatabaseHelper.js.map +1 -0
- package/dist/esm/db/Mysql.d.ts +30 -0
- package/dist/esm/db/Mysql.js +219 -0
- package/dist/esm/db/Mysql.js.map +1 -0
- package/dist/esm/db/Postgres.d.ts +32 -0
- package/dist/esm/db/Postgres.js +157 -0
- package/dist/esm/db/Postgres.js.map +1 -0
- package/dist/esm/db/Snowflake.d.ts +33 -0
- package/dist/esm/db/Snowflake.js +203 -0
- package/dist/esm/db/Snowflake.js.map +1 -0
- package/dist/esm/index.d.ts +41 -0
- package/dist/esm/index.ispec.d.ts +0 -0
- package/{src/index.ispec.ts → dist/esm/index.ispec.js} +2 -6
- package/dist/esm/index.ispec.js.map +1 -0
- package/dist/esm/index.js +266 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.uspec.d.ts +0 -0
- package/{src/index.uspec.ts → dist/esm/index.uspec.js} +2 -6
- package/dist/esm/index.uspec.js.map +1 -0
- package/dist/esm/models/Cache.d.ts +12 -0
- package/dist/esm/models/Cache.js +2 -0
- package/dist/esm/models/Cache.js.map +1 -0
- package/dist/esm/models/Client.d.ts +29 -0
- package/dist/esm/models/Client.js +2 -0
- package/dist/esm/models/Client.js.map +1 -0
- package/dist/esm/models/Database.d.ts +5 -0
- package/dist/esm/models/Database.js +2 -0
- package/dist/esm/models/Database.js.map +1 -0
- package/dist/esm/models/Filters.d.ts +117 -0
- package/dist/esm/models/Filters.js +97 -0
- package/dist/esm/models/Filters.js.map +1 -0
- package/dist/esm/models/Formats.d.ts +7 -0
- package/dist/esm/models/Formats.js +2 -0
- package/dist/esm/models/Formats.js.map +1 -0
- package/dist/esm/models/Quill.d.ts +73 -0
- package/dist/esm/models/Quill.js +2 -0
- package/dist/esm/models/Quill.js.map +1 -0
- package/dist/esm/utils/Error.d.ts +8 -0
- package/dist/esm/utils/Error.js +23 -0
- package/dist/esm/utils/Error.js.map +1 -0
- package/dist/esm/utils/RunQueryProcesses.d.ts +9 -0
- package/dist/esm/utils/RunQueryProcesses.js +30 -0
- package/dist/esm/utils/RunQueryProcesses.js.map +1 -0
- package/dist/esm/utils/schemaConversion.d.ts +1 -0
- package/dist/esm/utils/schemaConversion.js +12 -0
- package/dist/esm/utils/schemaConversion.js.map +1 -0
- package/dist/esm/utils/textProcessing.d.ts +2 -0
- package/dist/esm/utils/textProcessing.js +13 -0
- package/dist/esm/utils/textProcessing.js.map +1 -0
- package/package.json +11 -6
- package/eslint.config.mjs +0 -16
- package/examples/mysql-node/app.ts +0 -61
- package/examples/node-server/app.ts +0 -65
- package/jest.config.js +0 -19
- package/src/assets/pgtypes.ts +0 -2782
- package/src/clients/QuillServerClient.ts +0 -23
- package/src/db/BigQuery.ts +0 -220
- package/src/db/CachedConnection.ts +0 -109
- package/src/db/DatabaseHelper.ts +0 -373
- package/src/db/Mysql.ts +0 -262
- package/src/db/Postgres.ts +0 -185
- package/src/db/Snowflake.ts +0 -240
- package/src/index.ts +0 -392
- package/src/models/Cache.ts +0 -18
- package/src/models/Client.ts +0 -29
- package/src/models/Database.ts +0 -5
- package/src/models/Formats.ts +0 -19
- package/src/models/Quill.ts +0 -82
- package/src/utils/Error.ts +0 -35
- package/src/utils/RunQueryProcesses.ts +0 -33
- package/src/utils/schemaConversion.ts +0 -11
- package/src/utils/textProcessing.ts +0 -13
- package/tsconfig.json +0 -15
- /package/dist/{assets → cjs/assets}/pgtypes.d.ts +0 -0
- /package/dist/{clients → cjs/clients}/QuillServerClient.d.ts +0 -0
- /package/dist/{db → cjs/db}/BigQuery.d.ts +0 -0
- /package/dist/{db → cjs/db}/CachedConnection.d.ts +0 -0
- /package/dist/{db → cjs/db}/DatabaseHelper.d.ts +0 -0
- /package/dist/{db → cjs/db}/Mysql.d.ts +0 -0
- /package/dist/{db → cjs/db}/Postgres.d.ts +0 -0
- /package/dist/{db → cjs/db}/Snowflake.d.ts +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{index.ispec.d.ts → cjs/index.ispec.d.ts} +0 -0
- /package/dist/{index.uspec.d.ts → cjs/index.uspec.d.ts} +0 -0
- /package/dist/{models → cjs/models}/Cache.d.ts +0 -0
- /package/dist/{models → cjs/models}/Client.d.ts +0 -0
- /package/dist/{models → cjs/models}/Database.d.ts +0 -0
- /package/dist/{models → cjs/models}/Formats.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/Error.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/RunQueryProcesses.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/schemaConversion.d.ts +0 -0
- /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":"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"}
|
|
@@ -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,157 @@
|
|
|
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 } from "pg";
|
|
11
|
+
import { capitalize, depluralize } from "../utils/textProcessing";
|
|
12
|
+
import { PG_TYPES } from "../assets/pgtypes";
|
|
13
|
+
export function connectToPostgres(config) {
|
|
14
|
+
return new Pool(config);
|
|
15
|
+
}
|
|
16
|
+
export function disconnectFromPostgres(pool) {
|
|
17
|
+
pool.end();
|
|
18
|
+
}
|
|
19
|
+
export function runQueryPostgres(sql, pool) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
const results = yield pool.query(sql);
|
|
22
|
+
return {
|
|
23
|
+
fields: results.fields.map((field) => ({
|
|
24
|
+
name: field.name,
|
|
25
|
+
dataTypeID: field.dataTypeID,
|
|
26
|
+
})),
|
|
27
|
+
rows: results.rows,
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function getSchemasPostgres(pool) {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
const sql = `SELECT schema_name FROM information_schema.schemata
|
|
34
|
+
WHERE schema_name NOT LIKE 'pg_%' AND schema_name != 'information_schema';`;
|
|
35
|
+
const results = yield runQueryPostgres(sql, pool);
|
|
36
|
+
return results.rows.map((row) => row.schema_name);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export function getTablesBySchemaPostgres(pool, schemaNames) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const allColumns = yield Promise.all(schemaNames.map((schema) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const sql = `SELECT table_name, table_schema FROM information_schema.tables WHERE table_schema = '${schema}'`;
|
|
43
|
+
const results = yield runQueryPostgres(sql, pool);
|
|
44
|
+
return results.rows.map((row) => {
|
|
45
|
+
return { tableName: row.table_name, schemaName: row.table_schema };
|
|
46
|
+
});
|
|
47
|
+
})));
|
|
48
|
+
return allColumns.flat();
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export function getColumnsByTablePostgres(pool, schemaName, tableName) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
const sql = `SELECT column_name FROM information_schema.columns WHERE table_schema = '${schemaName}' and table_name = '${tableName}'`;
|
|
54
|
+
const results = yield runQueryPostgres(sql, pool);
|
|
55
|
+
return results.rows.map((row) => row.column_name);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export function getForeignKeysPostgres(pool, schemaName, tableName, primaryKey) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
const depluralizedTableName = depluralize(tableName);
|
|
61
|
+
let sql = `SELECT column_name FROM information_schema.columns
|
|
62
|
+
WHERE table_schema = '${schemaName}'
|
|
63
|
+
and table_name != '${tableName}'
|
|
64
|
+
and (column_name = '${primaryKey}'
|
|
65
|
+
or column_name = '${depluralizedTableName}_${primaryKey}'
|
|
66
|
+
or column_name = '${depluralizedTableName}${capitalize(primaryKey)}')`;
|
|
67
|
+
const results = yield runQueryPostgres(sql, pool);
|
|
68
|
+
let foreignKeysString = results.rows.map((key) => {
|
|
69
|
+
return key.column_name;
|
|
70
|
+
});
|
|
71
|
+
foreignKeysString = foreignKeysString.filter((key) => key !== "id" && key !== "_id_");
|
|
72
|
+
foreignKeysString = [...new Set(foreignKeysString)];
|
|
73
|
+
if (foreignKeysString.length === 0) {
|
|
74
|
+
sql = `SELECT column_name FROM information_schema.columns
|
|
75
|
+
WHERE table_schema = '${schemaName}'
|
|
76
|
+
and table_name != '${tableName}'
|
|
77
|
+
and (column_name like '${tableName}%'
|
|
78
|
+
or column_name like '%\\_id'
|
|
79
|
+
or column_name like '%Id'
|
|
80
|
+
or column_name like '%\\_${primaryKey}'
|
|
81
|
+
or column_name like '%${capitalize(primaryKey)}')`;
|
|
82
|
+
const results = yield runQueryPostgres(sql, pool);
|
|
83
|
+
foreignKeysString = results.rows.map((key) => {
|
|
84
|
+
return key.column_name;
|
|
85
|
+
});
|
|
86
|
+
foreignKeysString = [...new Set(foreignKeysString)];
|
|
87
|
+
}
|
|
88
|
+
return foreignKeysString;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
export function getSchemaColumnInfoPostgress(pool, schemaName, tableNames) {
|
|
92
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
const allColumns = yield Promise.all(tableNames.map((tableName) => __awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
const query = `
|
|
95
|
+
SELECT column_name as "columnName", udt_name as "fieldType"
|
|
96
|
+
FROM information_schema.columns
|
|
97
|
+
WHERE table_schema = '${tableName.schemaName}'
|
|
98
|
+
AND table_name = '${tableName.tableName}'
|
|
99
|
+
ORDER BY ordinal_position;
|
|
100
|
+
`;
|
|
101
|
+
const results = yield runQueryPostgres(query, pool);
|
|
102
|
+
return {
|
|
103
|
+
tableName: `${tableName.schemaName}.${tableName.tableName}`,
|
|
104
|
+
displayName: `${tableName.schemaName}.${tableName.tableName}`,
|
|
105
|
+
columns: results.rows.map((row) => {
|
|
106
|
+
var _a;
|
|
107
|
+
let pgType = (_a = PG_TYPES.find((pgType) => {
|
|
108
|
+
return pgType.typname === row.fieldType;
|
|
109
|
+
})) === null || _a === void 0 ? void 0 : _a.oid;
|
|
110
|
+
if (!pgType) {
|
|
111
|
+
pgType = 1043;
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
columnName: row.columnName,
|
|
115
|
+
displayName: row.columnName,
|
|
116
|
+
dataTypeID: pgType,
|
|
117
|
+
fieldType: row.fieldType,
|
|
118
|
+
};
|
|
119
|
+
}),
|
|
120
|
+
};
|
|
121
|
+
})));
|
|
122
|
+
return allColumns;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
export function formatPostgresConfig(connectionString) {
|
|
126
|
+
return { connectionString, ssl: { rejectUnauthorized: false } };
|
|
127
|
+
}
|
|
128
|
+
// CURRENTLY UNUSED BUT MAYBE USEFUL IN THE FUTURE
|
|
129
|
+
// function getSslConfig(client: Client):
|
|
130
|
+
// | {
|
|
131
|
+
// rejectUnauthorized: false;
|
|
132
|
+
// ca?: string;
|
|
133
|
+
// key?: string;
|
|
134
|
+
// cert?: string;
|
|
135
|
+
// }
|
|
136
|
+
// | undefined {
|
|
137
|
+
// if (!client.useSsl) {
|
|
138
|
+
// return undefined;
|
|
139
|
+
// }
|
|
140
|
+
// if (client.serverCa && client.clientKey && client.clientCert) {
|
|
141
|
+
// return {
|
|
142
|
+
// rejectUnauthorized: false,
|
|
143
|
+
// ca: client.serverCa,
|
|
144
|
+
// key: client.clientKey,
|
|
145
|
+
// cert: client.clientCert,
|
|
146
|
+
// };
|
|
147
|
+
// }
|
|
148
|
+
// if (client.serverCa) {
|
|
149
|
+
// return {
|
|
150
|
+
// rejectUnauthorized: false,
|
|
151
|
+
// ca: client.serverCa,
|
|
152
|
+
// };
|
|
153
|
+
// }
|
|
154
|
+
// // if using ssl with no certificates
|
|
155
|
+
// return { rejectUnauthorized: false };
|
|
156
|
+
// }
|
|
157
|
+
//# sourceMappingURL=Postgres.js.map
|