@technicity/data-service-generator 0.22.2 → 0.23.0-next.0
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/src/generation/generate.d.ts +21 -0
- package/dist/src/generation/generate.js +2349 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +11 -0
- package/dist/src/lib/CustomError.d.ts +3 -0
- package/dist/src/lib/CustomError.js +10 -0
- package/dist/src/lib/capitalizeFirstLetter.d.ts +1 -0
- package/dist/src/lib/capitalizeFirstLetter.js +6 -0
- package/dist/src/lib/getDuplicates.d.ts +1 -0
- package/dist/src/lib/getDuplicates.js +9 -0
- package/dist/src/lib/isNotNullOrUndefined.d.ts +1 -0
- package/dist/src/lib/isNotNullOrUndefined.js +7 -0
- package/dist/src/runtime/Cache.d.ts +28 -0
- package/dist/src/runtime/Cache.js +142 -0
- package/dist/src/runtime/IRuntime.d.ts +209 -0
- package/dist/src/runtime/IRuntime.js +12 -0
- package/dist/src/runtime/RuntimeMySQL.d.ts +26 -0
- package/dist/src/runtime/RuntimeMySQL.js +132 -0
- package/dist/src/runtime/RuntimePostgreSQL.d.ts +30 -0
- package/dist/src/runtime/RuntimePostgreSQL.js +73 -0
- package/dist/src/runtime/RuntimeSQLite.d.ts +42 -0
- package/dist/src/runtime/RuntimeSQLite.js +150 -0
- package/dist/src/runtime/Stats.d.ts +8 -0
- package/dist/src/runtime/Stats.js +31 -0
- package/dist/src/runtime/lib/MySQL.d.ts +13 -0
- package/dist/src/runtime/lib/MySQL.js +116 -0
- package/dist/src/runtime/lib/PostgreSQL.d.ts +14 -0
- package/dist/src/runtime/lib/PostgreSQL.js +110 -0
- package/dist/src/runtime/lib/SDKBadWhereError.d.ts +4 -0
- package/dist/src/runtime/lib/SDKBadWhereError.js +10 -0
- package/dist/src/runtime/lib/SDKNotFoundError.d.ts +4 -0
- package/dist/src/runtime/lib/SDKNotFoundError.js +10 -0
- package/dist/src/runtime/lib/addNullFallbacks.d.ts +1 -0
- package/dist/src/runtime/lib/addNullFallbacks.js +32 -0
- package/dist/src/runtime/lib/addNullFallbacks.test.d.ts +1 -0
- package/dist/src/runtime/lib/addNullFallbacks.test.js +206 -0
- package/dist/src/runtime/lib/cursor.d.ts +2 -0
- package/dist/src/runtime/lib/cursor.js +10 -0
- package/dist/src/runtime/lib/getDateTimeStringMySQL.d.ts +1 -0
- package/dist/src/runtime/lib/getDateTimeStringMySQL.js +7 -0
- package/dist/src/runtime/lib/getOrderBy.d.ts +5 -0
- package/dist/src/runtime/lib/getOrderBy.js +52 -0
- package/dist/src/runtime/lib/getSqlAst.d.ts +2 -0
- package/dist/src/runtime/lib/getSqlAst.js +245 -0
- package/dist/src/runtime/lib/getWhere.d.ts +2 -0
- package/dist/src/runtime/lib/getWhere.js +20 -0
- package/dist/src/runtime/lib/shared.d.ts +13 -0
- package/dist/src/runtime/lib/shared.js +1118 -0
- package/dist/src/runtime/lib/stringifyWhere.d.ts +18 -0
- package/dist/src/runtime/lib/stringifyWhere.js +257 -0
- package/dist/src/runtime/lib/stringifyWhere.test.d.ts +1 -0
- package/dist/src/runtime/lib/stringifyWhere.test.js +245 -0
- package/dist/src/runtime/lib/utility.d.ts +5 -0
- package/dist/src/runtime/lib/utility.js +14 -0
- package/dist/src/traverseFieldArgs.d.ts +2 -0
- package/dist/src/traverseFieldArgs.js +17 -0
- package/dist/src/traverseFieldArgs.test.d.ts +1 -0
- package/dist/src/traverseFieldArgs.test.js +56 -0
- package/dist/test/addWhereValidTrue.d.ts +1 -0
- package/dist/test/addWhereValidTrue.js +39 -0
- package/dist/test/globalSetup.d.ts +13 -0
- package/dist/test/globalSetup.js +436 -0
- package/dist/test/postgres/__generated__/sdk-ts/artifacts.d.ts +8425 -0
- package/dist/test/postgres/__generated__/sdk-ts/artifacts.js +10469 -0
- package/dist/test/postgres/__generated__/sdk-ts/index.js +12162 -0
- package/package.json +5 -1
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.default = globalSetup;
|
|
30
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
31
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
32
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
33
|
+
const testcontainers_1 = require("testcontainers");
|
|
34
|
+
const mysql_1 = require("@testcontainers/mysql");
|
|
35
|
+
const postgresql_1 = require("@testcontainers/postgresql");
|
|
36
|
+
const src_1 = require("../src");
|
|
37
|
+
const RuntimeMySQL_1 = require("../src/runtime/RuntimeMySQL");
|
|
38
|
+
const RuntimePostgreSQL_1 = require("../src/runtime/RuntimePostgreSQL");
|
|
39
|
+
const RuntimeSQLite_1 = require("../src/runtime/RuntimeSQLite");
|
|
40
|
+
const MySQL_1 = require("../src/runtime/lib/MySQL");
|
|
41
|
+
const PostgreSQL_1 = require("../src/runtime/lib/PostgreSQL");
|
|
42
|
+
const isNotNullOrUndefined_1 = require("../src/lib/isNotNullOrUndefined");
|
|
43
|
+
// Use globalSetup because of https://github.com/facebook/jest/issues/9709
|
|
44
|
+
// https://github.com/facebook/jest/issues/7184
|
|
45
|
+
// The globalThis hack only seems to work if there's 1 test file :/
|
|
46
|
+
// When there's multiple, the stuff I put on globalThis is undefined in test.ts.
|
|
47
|
+
async function globalSetup() {
|
|
48
|
+
let testItems = await Promise.all([
|
|
49
|
+
setUpMySQL57(false),
|
|
50
|
+
setUpMySQL80(false),
|
|
51
|
+
// TODO: testcontainers version update seems to have broken these
|
|
52
|
+
// process.env.CI ? null : setUpMySQL57(true),
|
|
53
|
+
// process.env.CI ? null : setUpMySQL80(true)
|
|
54
|
+
setUpPostgreSQL()
|
|
55
|
+
]).then((xs) => xs.filter(isNotNullOrUndefined_1.isNotNullOrUndefined));
|
|
56
|
+
// TODO: seems to be broken by TableWithColumnWithDefaultEmptyString
|
|
57
|
+
// testItems.push(await setUpSQLite(testItems[1].SDK, testItems[1].sdkPath));
|
|
58
|
+
globalThis.__testItems__ = testItems;
|
|
59
|
+
// So instanceof checks work
|
|
60
|
+
globalThis.SDKNotFoundError = src_1.SDKNotFoundError;
|
|
61
|
+
}
|
|
62
|
+
async function setUpMySQL57(withRedisCaching) {
|
|
63
|
+
const { containers, mysql: { host, port, user, password, database }, redis } = await _setUpMySQL57(withRedisCaching);
|
|
64
|
+
console.log("MySQL 5.7", host, port, user, password, database);
|
|
65
|
+
console.log("MySQL 5.7 redis", redis);
|
|
66
|
+
const mysql = new MySQL_1.MySQL({
|
|
67
|
+
host,
|
|
68
|
+
port,
|
|
69
|
+
user,
|
|
70
|
+
password,
|
|
71
|
+
database,
|
|
72
|
+
multipleStatements: true
|
|
73
|
+
});
|
|
74
|
+
await mysql.query(await promises_1.default.readFile(node_path_1.default.join(__dirname, "mysql57/data-model.sql"), "utf-8"));
|
|
75
|
+
await mysql.query(await promises_1.default
|
|
76
|
+
.readFile(node_path_1.default.join(__dirname, "mysql57/insert.sql"), "utf-8")
|
|
77
|
+
.then((x) => processSqlString(x)));
|
|
78
|
+
await mysql.endPool();
|
|
79
|
+
const outdir = node_path_1.default.join(__dirname, "mysql57/__generated__");
|
|
80
|
+
await promises_1.default.rm(outdir, { recursive: true, force: true });
|
|
81
|
+
const dialect = "mysql";
|
|
82
|
+
await (0, src_1.generate)({
|
|
83
|
+
dialect,
|
|
84
|
+
outdir,
|
|
85
|
+
user,
|
|
86
|
+
password,
|
|
87
|
+
host,
|
|
88
|
+
port,
|
|
89
|
+
database,
|
|
90
|
+
outputSqliteSchema: true
|
|
91
|
+
});
|
|
92
|
+
const sdkPath = node_path_1.default.join(outdir, "sdk-ts");
|
|
93
|
+
const { SDK } = require(sdkPath);
|
|
94
|
+
const sdkOpts = {
|
|
95
|
+
runtime: RuntimeMySQL_1.RuntimeMySQL,
|
|
96
|
+
clientOpts: {
|
|
97
|
+
user,
|
|
98
|
+
password,
|
|
99
|
+
host,
|
|
100
|
+
port,
|
|
101
|
+
database
|
|
102
|
+
// debug: [
|
|
103
|
+
// "ComQueryPacket", "RowDataPacket"
|
|
104
|
+
// ]
|
|
105
|
+
},
|
|
106
|
+
otherOpts: withRedisCaching
|
|
107
|
+
? {
|
|
108
|
+
redis: {
|
|
109
|
+
host: redis.host,
|
|
110
|
+
port: redis.port,
|
|
111
|
+
clusterMode: false,
|
|
112
|
+
tls: false,
|
|
113
|
+
db: 10,
|
|
114
|
+
socketTimeout: 50000
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
: undefined,
|
|
118
|
+
passBeforeValueToAfterCallback: true
|
|
119
|
+
};
|
|
120
|
+
const sdk = new SDK(sdkOpts);
|
|
121
|
+
const artifacts = require(node_path_1.default.join(sdkPath, "artifacts")).artifacts;
|
|
122
|
+
return {
|
|
123
|
+
displayName: `MySQL 5.7${withRedisCaching ? " (Redis Cache)" : ""}`,
|
|
124
|
+
dialect,
|
|
125
|
+
sdk,
|
|
126
|
+
SDK,
|
|
127
|
+
sdkOpts,
|
|
128
|
+
sdkPath,
|
|
129
|
+
artifacts,
|
|
130
|
+
containers
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
async function _setUpMySQL57(withRedisCaching) {
|
|
134
|
+
if (process.env.CI) {
|
|
135
|
+
const database = node_crypto_1.default.randomUUID();
|
|
136
|
+
const out = {
|
|
137
|
+
containers: [],
|
|
138
|
+
mysql: {
|
|
139
|
+
// See .gitlab-ci.yml
|
|
140
|
+
host: process.env.MYSQL57_HOST,
|
|
141
|
+
port: parseInt(process.env.MYSQL57_PORT),
|
|
142
|
+
user: process.env.MYSQL57_USER,
|
|
143
|
+
password: process.env.MYSQL57_PASSWORD,
|
|
144
|
+
database
|
|
145
|
+
},
|
|
146
|
+
redis: {
|
|
147
|
+
host: process.env.REDIS_HOST,
|
|
148
|
+
port: parseInt(process.env.REDIS_PORT)
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
const mysql = new MySQL_1.MySQL({ ...out.mysql, database: "mysql" });
|
|
152
|
+
await mysql.query("CREATE DATABASE ??", [database]);
|
|
153
|
+
await mysql.endPool();
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
// Note: there's no linux/arm64, so on M1 machines, need to run ahead of time:
|
|
157
|
+
// docker pull --platform linux/amd64 mysql:5.7.41
|
|
158
|
+
const containerMysqlP = new mysql_1.MySqlContainer("mysql:5.7.41").withReuse().start();
|
|
159
|
+
const containers = withRedisCaching
|
|
160
|
+
? await Promise.all([
|
|
161
|
+
containerMysqlP,
|
|
162
|
+
new testcontainers_1.GenericContainer("redis:6.2.2")
|
|
163
|
+
.withReuse()
|
|
164
|
+
.withExposedPorts(6379)
|
|
165
|
+
.start()
|
|
166
|
+
])
|
|
167
|
+
: [await containerMysqlP];
|
|
168
|
+
const [containerMySql, containerRedis] = containers;
|
|
169
|
+
return {
|
|
170
|
+
mysql: {
|
|
171
|
+
user: containerMySql.getUsername(),
|
|
172
|
+
password: containerMySql.getUserPassword(),
|
|
173
|
+
host: containerMySql.getHost(),
|
|
174
|
+
port: containerMySql.getPort(),
|
|
175
|
+
database: containerMySql.getDatabase()
|
|
176
|
+
},
|
|
177
|
+
redis: {
|
|
178
|
+
host: containerRedis?.getHost(),
|
|
179
|
+
port: containerRedis?.getMappedPort(6379)
|
|
180
|
+
},
|
|
181
|
+
containers
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
async function setUpMySQL80(withRedisCaching) {
|
|
185
|
+
const { containers, mysql: { host, port, user, password, database }, redis } = await _setUpMySQL80(withRedisCaching);
|
|
186
|
+
console.log("MySQL 8.0", host, port, user, password, database);
|
|
187
|
+
console.log("MySQL 8.0 redis", redis);
|
|
188
|
+
const mysql = new MySQL_1.MySQL({
|
|
189
|
+
host,
|
|
190
|
+
port,
|
|
191
|
+
user,
|
|
192
|
+
password,
|
|
193
|
+
database,
|
|
194
|
+
multipleStatements: true
|
|
195
|
+
});
|
|
196
|
+
await mysql.query(await promises_1.default.readFile(node_path_1.default.join(__dirname, "mysql57/data-model.sql"), "utf-8"));
|
|
197
|
+
await mysql.query(await promises_1.default
|
|
198
|
+
.readFile(node_path_1.default.join(__dirname, "mysql57/insert.sql"), "utf-8")
|
|
199
|
+
.then((x) => processSqlString(x)));
|
|
200
|
+
await mysql.endPool();
|
|
201
|
+
const outdir = node_path_1.default.join(__dirname, "mysql80/__generated__");
|
|
202
|
+
await promises_1.default.rm(outdir, { recursive: true, force: true });
|
|
203
|
+
const dialect = "mysql";
|
|
204
|
+
await (0, src_1.generate)({
|
|
205
|
+
dialect,
|
|
206
|
+
outdir,
|
|
207
|
+
user,
|
|
208
|
+
password,
|
|
209
|
+
host,
|
|
210
|
+
port,
|
|
211
|
+
database,
|
|
212
|
+
outputSqliteSchema: true
|
|
213
|
+
});
|
|
214
|
+
const sdkPath = node_path_1.default.join(outdir, "sdk-ts");
|
|
215
|
+
const { SDK } = require(sdkPath);
|
|
216
|
+
const sdkOpts = {
|
|
217
|
+
runtime: RuntimeMySQL_1.RuntimeMySQL,
|
|
218
|
+
clientOpts: {
|
|
219
|
+
user,
|
|
220
|
+
password,
|
|
221
|
+
host,
|
|
222
|
+
port,
|
|
223
|
+
database
|
|
224
|
+
// debug: [
|
|
225
|
+
// "ComQueryPacket", "RowDataPacket"
|
|
226
|
+
// ]
|
|
227
|
+
},
|
|
228
|
+
otherOpts: withRedisCaching
|
|
229
|
+
? {
|
|
230
|
+
redis: {
|
|
231
|
+
host: redis?.host,
|
|
232
|
+
port: redis?.port,
|
|
233
|
+
clusterMode: false,
|
|
234
|
+
tls: false,
|
|
235
|
+
db: 10,
|
|
236
|
+
socketTimeout: 50000
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
: undefined,
|
|
240
|
+
passBeforeValueToAfterCallback: true
|
|
241
|
+
};
|
|
242
|
+
const sdk = new SDK(sdkOpts);
|
|
243
|
+
const artifacts = require(node_path_1.default.join(sdkPath, "artifacts")).artifacts;
|
|
244
|
+
return {
|
|
245
|
+
displayName: `MySQL 8.0${withRedisCaching ? " (Redis Cache)" : ""}`,
|
|
246
|
+
dialect,
|
|
247
|
+
sdk,
|
|
248
|
+
SDK,
|
|
249
|
+
sdkOpts,
|
|
250
|
+
sdkPath,
|
|
251
|
+
artifacts,
|
|
252
|
+
containers
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
async function _setUpMySQL80(withRedisCaching) {
|
|
256
|
+
if (process.env.CI) {
|
|
257
|
+
const database = node_crypto_1.default.randomUUID();
|
|
258
|
+
const out = {
|
|
259
|
+
containers: [],
|
|
260
|
+
mysql: {
|
|
261
|
+
host: process.env.MYSQL80_HOST,
|
|
262
|
+
port: parseInt(process.env.MYSQL80_PORT),
|
|
263
|
+
user: process.env.MYSQL80_USER,
|
|
264
|
+
password: process.env.MYSQL80_PASSWORD,
|
|
265
|
+
database
|
|
266
|
+
},
|
|
267
|
+
redis: {
|
|
268
|
+
host: process.env.REDIS_HOST,
|
|
269
|
+
port: parseInt(process.env.REDIS_PORT)
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
const mysql = new MySQL_1.MySQL({ ...out.mysql, database: "mysql" });
|
|
273
|
+
await mysql.query("CREATE DATABASE ??", [database]);
|
|
274
|
+
await mysql.endPool();
|
|
275
|
+
return out;
|
|
276
|
+
}
|
|
277
|
+
const containerMysqlP = new mysql_1.MySqlContainer("mysql:8.0.32")
|
|
278
|
+
.withReuse()
|
|
279
|
+
// https://github.com/mysqljs/mysql/issues/2499
|
|
280
|
+
.withCommand(["--default-authentication-plugin=mysql_native_password"])
|
|
281
|
+
.start();
|
|
282
|
+
const containers = withRedisCaching
|
|
283
|
+
? await Promise.all([
|
|
284
|
+
containerMysqlP,
|
|
285
|
+
new testcontainers_1.GenericContainer("redis:6.2.2")
|
|
286
|
+
.withReuse()
|
|
287
|
+
.withExposedPorts(6379)
|
|
288
|
+
.start()
|
|
289
|
+
])
|
|
290
|
+
: [await containerMysqlP];
|
|
291
|
+
const [containerMySql, containerRedis] = containers;
|
|
292
|
+
return {
|
|
293
|
+
mysql: {
|
|
294
|
+
user: containerMySql.getUsername(),
|
|
295
|
+
password: containerMySql.getUserPassword(),
|
|
296
|
+
host: containerMySql.getHost(),
|
|
297
|
+
port: containerMySql.getPort(),
|
|
298
|
+
database: containerMySql.getDatabase()
|
|
299
|
+
},
|
|
300
|
+
redis: {
|
|
301
|
+
host: containerRedis?.getHost(),
|
|
302
|
+
port: containerRedis?.getMappedPort(6379)
|
|
303
|
+
},
|
|
304
|
+
containers
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
async function setUpPostgreSQL() {
|
|
308
|
+
const dialect = "postgresql";
|
|
309
|
+
let container = null;
|
|
310
|
+
let host;
|
|
311
|
+
let port;
|
|
312
|
+
let user;
|
|
313
|
+
let password;
|
|
314
|
+
let database;
|
|
315
|
+
if (process.env.CI) {
|
|
316
|
+
const dbName = node_crypto_1.default.randomUUID().replace(/-/g, "_").slice(0, 20);
|
|
317
|
+
host = process.env.POSTGRES_HOST;
|
|
318
|
+
port = parseInt(process.env.POSTGRES_PORT);
|
|
319
|
+
user = process.env.POSTGRES_USER;
|
|
320
|
+
password = process.env.POSTGRES_PASSWORD;
|
|
321
|
+
database = dbName;
|
|
322
|
+
const pg = new (await Promise.resolve().then(() => __importStar(require("pg")))).Pool({
|
|
323
|
+
host,
|
|
324
|
+
port,
|
|
325
|
+
user,
|
|
326
|
+
password,
|
|
327
|
+
database: process.env.POSTGRES_DATABASE ?? "postgres"
|
|
328
|
+
});
|
|
329
|
+
await pg.query(`CREATE DATABASE "${dbName}"`);
|
|
330
|
+
await pg.end();
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
const postgresContainer = await new postgresql_1.PostgreSqlContainer("postgres:17.7-alpine")
|
|
334
|
+
.withReuse()
|
|
335
|
+
.start();
|
|
336
|
+
container = postgresContainer;
|
|
337
|
+
host = postgresContainer.getHost();
|
|
338
|
+
port = postgresContainer.getPort();
|
|
339
|
+
user = postgresContainer.getUsername();
|
|
340
|
+
password = postgresContainer.getPassword();
|
|
341
|
+
database = postgresContainer.getDatabase();
|
|
342
|
+
}
|
|
343
|
+
console.log("PostgreSQL", host, port, user, database);
|
|
344
|
+
const pg = new PostgreSQL_1.PostgreSQL({
|
|
345
|
+
host,
|
|
346
|
+
port,
|
|
347
|
+
user,
|
|
348
|
+
password,
|
|
349
|
+
database
|
|
350
|
+
});
|
|
351
|
+
const runSql = async (sql) => {
|
|
352
|
+
const statements = sql
|
|
353
|
+
.split(/;\s*/)
|
|
354
|
+
.map((s) => s.trim())
|
|
355
|
+
.filter((s) => s.length > 0 && !s.startsWith("--"));
|
|
356
|
+
for (const st of statements) {
|
|
357
|
+
await pg.pool.query(st);
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
await runSql(await promises_1.default.readFile(node_path_1.default.join(__dirname, "postgres/data-model.sql"), "utf-8"));
|
|
361
|
+
await runSql(await promises_1.default.readFile(node_path_1.default.join(__dirname, "postgres/insert.sql"), "utf-8"));
|
|
362
|
+
await pg.endPool();
|
|
363
|
+
const outdir = node_path_1.default.join(__dirname, "postgres/__generated__");
|
|
364
|
+
await promises_1.default.rm(outdir, { recursive: true, force: true });
|
|
365
|
+
await (0, src_1.generate)({
|
|
366
|
+
dialect,
|
|
367
|
+
outdir,
|
|
368
|
+
user,
|
|
369
|
+
password,
|
|
370
|
+
host,
|
|
371
|
+
port,
|
|
372
|
+
database,
|
|
373
|
+
outputSqliteSchema: false
|
|
374
|
+
});
|
|
375
|
+
const sdkPath = node_path_1.default.join(outdir, "sdk-ts");
|
|
376
|
+
const { SDK } = require(sdkPath);
|
|
377
|
+
const artifacts = require(node_path_1.default.join(sdkPath, "artifacts")).artifacts;
|
|
378
|
+
const sdkOpts = {
|
|
379
|
+
runtime: RuntimePostgreSQL_1.RuntimePostgreSQL,
|
|
380
|
+
clientOpts: {
|
|
381
|
+
host,
|
|
382
|
+
port,
|
|
383
|
+
user,
|
|
384
|
+
password,
|
|
385
|
+
database
|
|
386
|
+
},
|
|
387
|
+
otherOpts: undefined,
|
|
388
|
+
passBeforeValueToAfterCallback: true
|
|
389
|
+
};
|
|
390
|
+
const sdk = new SDK(sdkOpts);
|
|
391
|
+
return {
|
|
392
|
+
displayName: "PostgreSQL 17.7",
|
|
393
|
+
dialect,
|
|
394
|
+
sdk,
|
|
395
|
+
SDK,
|
|
396
|
+
sdkOpts,
|
|
397
|
+
sdkPath,
|
|
398
|
+
artifacts,
|
|
399
|
+
containers: container ? [container] : []
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
// Reuse generated MySQL SDK, since we don't support generation with SQLite.
|
|
403
|
+
async function setUpSQLite(SDK, sdkPath) {
|
|
404
|
+
const dialect = "sqlite";
|
|
405
|
+
const sdkOpts = {
|
|
406
|
+
runtime: RuntimeSQLite_1.RuntimeSQLite,
|
|
407
|
+
clientOpts: { filename: ":memory:" },
|
|
408
|
+
otherOpts: {
|
|
409
|
+
seedString: await promises_1.default
|
|
410
|
+
.readFile(node_path_1.default.join(__dirname, "mysql57/insert.sql"), "utf-8")
|
|
411
|
+
.then((x) => processSqlString(x))
|
|
412
|
+
},
|
|
413
|
+
passBeforeValueToAfterCallback: true
|
|
414
|
+
};
|
|
415
|
+
const sdk = new SDK(sdkOpts);
|
|
416
|
+
const artifacts = require(node_path_1.default.join(sdkPath, "artifacts")).artifacts;
|
|
417
|
+
return {
|
|
418
|
+
displayName: "SQLite :memory:",
|
|
419
|
+
dialect,
|
|
420
|
+
sdk,
|
|
421
|
+
SDK,
|
|
422
|
+
sdkOpts,
|
|
423
|
+
sdkPath,
|
|
424
|
+
artifacts,
|
|
425
|
+
containers: []
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
function processSqlString(input) {
|
|
429
|
+
return (input
|
|
430
|
+
.split("\n")
|
|
431
|
+
// Remove comments
|
|
432
|
+
.filter((x) => !x.startsWith("--"))
|
|
433
|
+
.join("\n")
|
|
434
|
+
.replace(/\\/g, "")
|
|
435
|
+
.replace(/\n/g, ""));
|
|
436
|
+
}
|