drizzle-kit 0.14.1 → 0.14.3
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/index.js +1047 -259
- package/package.json +21 -5
package/index.js
CHANGED
|
@@ -1901,7 +1901,7 @@ var require_common = __commonJS({
|
|
|
1901
1901
|
function setup(env2) {
|
|
1902
1902
|
createDebug.debug = createDebug;
|
|
1903
1903
|
createDebug.default = createDebug;
|
|
1904
|
-
createDebug.coerce =
|
|
1904
|
+
createDebug.coerce = coerce2;
|
|
1905
1905
|
createDebug.disable = disable;
|
|
1906
1906
|
createDebug.enable = enable;
|
|
1907
1907
|
createDebug.enabled = enabled;
|
|
@@ -2042,7 +2042,7 @@ var require_common = __commonJS({
|
|
|
2042
2042
|
function toNamespace(regexp) {
|
|
2043
2043
|
return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*");
|
|
2044
2044
|
}
|
|
2045
|
-
function
|
|
2045
|
+
function coerce2(val) {
|
|
2046
2046
|
if (val instanceof Error) {
|
|
2047
2047
|
return val.stack || val.message;
|
|
2048
2048
|
}
|
|
@@ -4516,16 +4516,16 @@ var require_node2 = __commonJS({
|
|
|
4516
4516
|
var source = frame.getFileName() || frame.getScriptNameOrSourceURL();
|
|
4517
4517
|
if (source) {
|
|
4518
4518
|
var line = frame.getLineNumber();
|
|
4519
|
-
var
|
|
4519
|
+
var column5 = frame.getColumnNumber() - 1;
|
|
4520
4520
|
var noHeader = /^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/;
|
|
4521
4521
|
var headerLength = noHeader.test(process.version) ? 0 : 62;
|
|
4522
|
-
if (line === 1 &&
|
|
4523
|
-
|
|
4522
|
+
if (line === 1 && column5 > headerLength && !isInBrowser() && !frame.isEval()) {
|
|
4523
|
+
column5 -= headerLength;
|
|
4524
4524
|
}
|
|
4525
4525
|
var position = mapSourcePosition({
|
|
4526
4526
|
source,
|
|
4527
4527
|
line,
|
|
4528
|
-
column:
|
|
4528
|
+
column: column5
|
|
4529
4529
|
});
|
|
4530
4530
|
state.curPosition = position;
|
|
4531
4531
|
frame = cloneCallSite(frame);
|
|
@@ -4583,7 +4583,7 @@ var require_node2 = __commonJS({
|
|
|
4583
4583
|
if (match) {
|
|
4584
4584
|
var source = match[1];
|
|
4585
4585
|
var line = +match[2];
|
|
4586
|
-
var
|
|
4586
|
+
var column5 = +match[3];
|
|
4587
4587
|
var contents = fileContentsCache[source];
|
|
4588
4588
|
if (!contents && fs32 && fs32.existsSync(source)) {
|
|
4589
4589
|
try {
|
|
@@ -4595,7 +4595,7 @@ var require_node2 = __commonJS({
|
|
|
4595
4595
|
if (contents) {
|
|
4596
4596
|
var code = contents.split(/(?:\r\n|\r|\n)/)[line - 1];
|
|
4597
4597
|
if (code) {
|
|
4598
|
-
return source + ":" + line + "\n" + code + "\n" + new Array(
|
|
4598
|
+
return source + ":" + line + "\n" + code + "\n" + new Array(column5).join(" ") + "^";
|
|
4599
4599
|
}
|
|
4600
4600
|
}
|
|
4601
4601
|
}
|
|
@@ -5545,7 +5545,7 @@ var require_node2 = __commonJS({
|
|
|
5545
5545
|
var stack = void 0;
|
|
5546
5546
|
var pos = void 0;
|
|
5547
5547
|
var line = void 0;
|
|
5548
|
-
var
|
|
5548
|
+
var column5 = void 0;
|
|
5549
5549
|
var token = void 0;
|
|
5550
5550
|
var key = void 0;
|
|
5551
5551
|
var root = void 0;
|
|
@@ -5555,7 +5555,7 @@ var require_node2 = __commonJS({
|
|
|
5555
5555
|
stack = [];
|
|
5556
5556
|
pos = 0;
|
|
5557
5557
|
line = 1;
|
|
5558
|
-
|
|
5558
|
+
column5 = 0;
|
|
5559
5559
|
token = void 0;
|
|
5560
5560
|
key = void 0;
|
|
5561
5561
|
root = void 0;
|
|
@@ -5609,11 +5609,11 @@ var require_node2 = __commonJS({
|
|
|
5609
5609
|
var c2 = peek();
|
|
5610
5610
|
if (c2 === "\n") {
|
|
5611
5611
|
line++;
|
|
5612
|
-
|
|
5612
|
+
column5 = 0;
|
|
5613
5613
|
} else if (c2) {
|
|
5614
|
-
|
|
5614
|
+
column5 += c2.length;
|
|
5615
5615
|
} else {
|
|
5616
|
-
|
|
5616
|
+
column5++;
|
|
5617
5617
|
}
|
|
5618
5618
|
if (c2) {
|
|
5619
5619
|
pos += c2.length;
|
|
@@ -6047,7 +6047,7 @@ var require_node2 = __commonJS({
|
|
|
6047
6047
|
throw invalidChar(read());
|
|
6048
6048
|
} };
|
|
6049
6049
|
function newToken(type, value) {
|
|
6050
|
-
return { type, value, line, column:
|
|
6050
|
+
return { type, value, line, column: column5 };
|
|
6051
6051
|
}
|
|
6052
6052
|
function literal(s) {
|
|
6053
6053
|
var _iteratorNormalCompletion = true;
|
|
@@ -6284,16 +6284,16 @@ var require_node2 = __commonJS({
|
|
|
6284
6284
|
}
|
|
6285
6285
|
function invalidChar(c2) {
|
|
6286
6286
|
if (c2 === void 0) {
|
|
6287
|
-
return syntaxError("JSON5: invalid end of input at " + line + ":" +
|
|
6287
|
+
return syntaxError("JSON5: invalid end of input at " + line + ":" + column5);
|
|
6288
6288
|
}
|
|
6289
|
-
return syntaxError("JSON5: invalid character '" + formatChar(c2) + "' at " + line + ":" +
|
|
6289
|
+
return syntaxError("JSON5: invalid character '" + formatChar(c2) + "' at " + line + ":" + column5);
|
|
6290
6290
|
}
|
|
6291
6291
|
function invalidEOF() {
|
|
6292
|
-
return syntaxError("JSON5: invalid end of input at " + line + ":" +
|
|
6292
|
+
return syntaxError("JSON5: invalid end of input at " + line + ":" + column5);
|
|
6293
6293
|
}
|
|
6294
6294
|
function invalidIdentifier() {
|
|
6295
|
-
|
|
6296
|
-
return syntaxError("JSON5: invalid identifier character at " + line + ":" +
|
|
6295
|
+
column5 -= 5;
|
|
6296
|
+
return syntaxError("JSON5: invalid identifier character at " + line + ":" + column5);
|
|
6297
6297
|
}
|
|
6298
6298
|
function separatorChar(c2) {
|
|
6299
6299
|
console.warn("JSON5: '" + c2 + "' is not valid ECMAScript; consider escaping");
|
|
@@ -6312,7 +6312,7 @@ var require_node2 = __commonJS({
|
|
|
6312
6312
|
function syntaxError(message) {
|
|
6313
6313
|
var err = new SyntaxError(message);
|
|
6314
6314
|
err.lineNumber = line;
|
|
6315
|
-
err.columnNumber =
|
|
6315
|
+
err.columnNumber = column5;
|
|
6316
6316
|
return err;
|
|
6317
6317
|
}
|
|
6318
6318
|
module22.exports = exports2["default"];
|
|
@@ -6670,31 +6670,31 @@ var require_node2 = __commonJS({
|
|
|
6670
6670
|
var configAbsolutePath = walkForTsConfig(cwd);
|
|
6671
6671
|
return configAbsolutePath ? path3.resolve(configAbsolutePath) : void 0;
|
|
6672
6672
|
}
|
|
6673
|
-
function walkForTsConfig(directory,
|
|
6674
|
-
if (
|
|
6675
|
-
|
|
6673
|
+
function walkForTsConfig(directory, existsSync2) {
|
|
6674
|
+
if (existsSync2 === void 0) {
|
|
6675
|
+
existsSync2 = fs32.existsSync;
|
|
6676
6676
|
}
|
|
6677
6677
|
var configPath = path3.join(directory, "./tsconfig.json");
|
|
6678
|
-
if (
|
|
6678
|
+
if (existsSync2(configPath)) {
|
|
6679
6679
|
return configPath;
|
|
6680
6680
|
}
|
|
6681
6681
|
var parentDirectory = path3.join(directory, "../");
|
|
6682
6682
|
if (directory === parentDirectory) {
|
|
6683
6683
|
return void 0;
|
|
6684
6684
|
}
|
|
6685
|
-
return walkForTsConfig(parentDirectory,
|
|
6685
|
+
return walkForTsConfig(parentDirectory, existsSync2);
|
|
6686
6686
|
}
|
|
6687
6687
|
exports2.walkForTsConfig = walkForTsConfig;
|
|
6688
|
-
function loadTsconfig(configFilePath,
|
|
6689
|
-
if (
|
|
6690
|
-
|
|
6688
|
+
function loadTsconfig(configFilePath, existsSync2, readFileSync) {
|
|
6689
|
+
if (existsSync2 === void 0) {
|
|
6690
|
+
existsSync2 = fs32.existsSync;
|
|
6691
6691
|
}
|
|
6692
6692
|
if (readFileSync === void 0) {
|
|
6693
6693
|
readFileSync = function(filename) {
|
|
6694
6694
|
return fs32.readFileSync(filename, "utf8");
|
|
6695
6695
|
};
|
|
6696
6696
|
}
|
|
6697
|
-
if (!
|
|
6697
|
+
if (!existsSync2(configFilePath)) {
|
|
6698
6698
|
return void 0;
|
|
6699
6699
|
}
|
|
6700
6700
|
var configString = readFileSync(configFilePath);
|
|
@@ -6707,10 +6707,10 @@ var require_node2 = __commonJS({
|
|
|
6707
6707
|
}
|
|
6708
6708
|
var currentDir = path3.dirname(configFilePath);
|
|
6709
6709
|
var extendedConfigPath = path3.join(currentDir, extendedConfig);
|
|
6710
|
-
if (extendedConfig.indexOf("/") !== -1 && extendedConfig.indexOf(".") !== -1 && !
|
|
6710
|
+
if (extendedConfig.indexOf("/") !== -1 && extendedConfig.indexOf(".") !== -1 && !existsSync2(extendedConfigPath)) {
|
|
6711
6711
|
extendedConfigPath = path3.join(currentDir, "node_modules", extendedConfig);
|
|
6712
6712
|
}
|
|
6713
|
-
var base = loadTsconfig(extendedConfigPath,
|
|
6713
|
+
var base = loadTsconfig(extendedConfigPath, existsSync2, readFileSync) || {};
|
|
6714
6714
|
if (base.compilerOptions && base.compilerOptions.baseUrl) {
|
|
6715
6715
|
var extendsDir = path3.dirname(extendedConfig);
|
|
6716
6716
|
base.compilerOptions.baseUrl = path3.join(extendsDir, base.compilerOptions.baseUrl);
|
|
@@ -7382,9 +7382,11 @@ var init_pgImports = __esm({
|
|
|
7382
7382
|
// src/serializer/pgSerializer.ts
|
|
7383
7383
|
var pgSerializer_exports = {};
|
|
7384
7384
|
__export(pgSerializer_exports, {
|
|
7385
|
-
|
|
7385
|
+
fromDatabase: () => fromDatabase,
|
|
7386
|
+
generatePgSnapshot: () => generatePgSnapshot,
|
|
7387
|
+
indexName: () => indexName
|
|
7386
7388
|
});
|
|
7387
|
-
var import_drizzle_orm_pg2, import_utils, import_sql, import_table, dialect4, generatePgSnapshot;
|
|
7389
|
+
var import_drizzle_orm_pg2, import_utils, import_sql, import_table, dialect4, indexName, generatePgSnapshot, fromDatabase;
|
|
7388
7390
|
var init_pgSerializer = __esm({
|
|
7389
7391
|
"src/serializer/pgSerializer.ts"() {
|
|
7390
7392
|
import_drizzle_orm_pg2 = require("drizzle-orm-pg");
|
|
@@ -7392,6 +7394,9 @@ var init_pgSerializer = __esm({
|
|
|
7392
7394
|
import_sql = require("drizzle-orm/sql");
|
|
7393
7395
|
import_table = require("drizzle-orm/table");
|
|
7394
7396
|
dialect4 = new import_drizzle_orm_pg2.PgDialect();
|
|
7397
|
+
indexName = (tableName, columns) => {
|
|
7398
|
+
return `${tableName}_${columns.join("_")}_index`;
|
|
7399
|
+
};
|
|
7395
7400
|
generatePgSnapshot = (tables, enums) => {
|
|
7396
7401
|
const result = {};
|
|
7397
7402
|
for (const table4 of tables) {
|
|
@@ -7399,37 +7404,41 @@ var init_pgSerializer = __esm({
|
|
|
7399
7404
|
const columnsObject = {};
|
|
7400
7405
|
const indexesObject = {};
|
|
7401
7406
|
const foreignKeysObject = {};
|
|
7402
|
-
(0, import_utils.getTableColumns)(table4).forEach((
|
|
7403
|
-
const notNull =
|
|
7404
|
-
const primaryKey =
|
|
7405
|
-
const sqlTypeLowered =
|
|
7407
|
+
(0, import_utils.getTableColumns)(table4).forEach((column5) => {
|
|
7408
|
+
const notNull = column5.notNull;
|
|
7409
|
+
const primaryKey = column5.primary;
|
|
7410
|
+
const sqlTypeLowered = column5.getSQLType().toLowerCase();
|
|
7406
7411
|
const columnToSet = {
|
|
7407
|
-
name:
|
|
7408
|
-
type:
|
|
7412
|
+
name: column5.name,
|
|
7413
|
+
type: column5.getSQLType(),
|
|
7409
7414
|
primaryKey,
|
|
7410
7415
|
notNull
|
|
7411
7416
|
};
|
|
7412
|
-
if (
|
|
7413
|
-
if (
|
|
7414
|
-
columnToSet.default =
|
|
7417
|
+
if (column5.default !== void 0) {
|
|
7418
|
+
if (column5.default instanceof import_sql.SQL) {
|
|
7419
|
+
columnToSet.default = column5.default.queryChunks.map((it) => {
|
|
7415
7420
|
if (typeof it === "string") {
|
|
7416
7421
|
return `${it}`;
|
|
7417
7422
|
}
|
|
7418
7423
|
throw new Error("Only strings are allowed in .default()");
|
|
7419
7424
|
}).join();
|
|
7420
7425
|
} else {
|
|
7421
|
-
if (typeof
|
|
7422
|
-
columnToSet.default = `'${
|
|
7426
|
+
if (typeof column5.default === "string") {
|
|
7427
|
+
columnToSet.default = `'${column5.default}'`;
|
|
7423
7428
|
} else {
|
|
7424
7429
|
if (sqlTypeLowered === "jsonb" || sqlTypeLowered === "json") {
|
|
7425
|
-
columnToSet.default = `'${JSON.stringify(
|
|
7430
|
+
columnToSet.default = `'${JSON.stringify(
|
|
7431
|
+
column5.default
|
|
7432
|
+
)}'::${sqlTypeLowered}`;
|
|
7433
|
+
} else if (column5.default instanceof Date) {
|
|
7434
|
+
columnToSet.default = `'${column5.default.toISOString()}'`;
|
|
7426
7435
|
} else {
|
|
7427
|
-
columnToSet.default =
|
|
7436
|
+
columnToSet.default = column5.default;
|
|
7428
7437
|
}
|
|
7429
7438
|
}
|
|
7430
7439
|
}
|
|
7431
7440
|
}
|
|
7432
|
-
columnsObject[
|
|
7441
|
+
columnsObject[column5.name] = columnToSet;
|
|
7433
7442
|
});
|
|
7434
7443
|
const foreignKeys = (0, import_utils.getTableForeignKeys)(table4).map((fk4) => {
|
|
7435
7444
|
const name = fk4.getName();
|
|
@@ -7456,7 +7465,11 @@ var init_pgSerializer = __esm({
|
|
|
7456
7465
|
(0, import_utils.getTableIndexes)(table4).forEach((value) => {
|
|
7457
7466
|
var _a;
|
|
7458
7467
|
const columns = value.config.columns;
|
|
7459
|
-
|
|
7468
|
+
let name = value.config.name;
|
|
7469
|
+
name = name ? name : indexName(
|
|
7470
|
+
tableName,
|
|
7471
|
+
columns.map((it) => it.name)
|
|
7472
|
+
);
|
|
7460
7473
|
let indexColumns = columns.map((it) => {
|
|
7461
7474
|
if (it instanceof import_sql.SQL) {
|
|
7462
7475
|
return dialect4.sqlToQuery(it).sql;
|
|
@@ -7488,6 +7501,201 @@ var init_pgSerializer = __esm({
|
|
|
7488
7501
|
}, {});
|
|
7489
7502
|
return { version: "3", dialect: "pg", tables: result, enums: enumsToReturn };
|
|
7490
7503
|
};
|
|
7504
|
+
fromDatabase = async (db, progressCallback) => {
|
|
7505
|
+
const result = {};
|
|
7506
|
+
const allTables = await db.execute(
|
|
7507
|
+
import_sql.sql`SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema != 'pg_catalog' and table_schema != 'information_schema';`
|
|
7508
|
+
);
|
|
7509
|
+
progressCallback("fetched all tables");
|
|
7510
|
+
const all = allTables.rows.map((row) => {
|
|
7511
|
+
return new Promise(async (res, rej) => {
|
|
7512
|
+
const tableName = row.table_name;
|
|
7513
|
+
try {
|
|
7514
|
+
const columnToReturn = {};
|
|
7515
|
+
const indexToReturn = {};
|
|
7516
|
+
const foreignKeysToReturn = {};
|
|
7517
|
+
const tableResponse = await db.execute(
|
|
7518
|
+
import_sql.sql.raw(`SELECT a.attrelid::regclass::text, a.attname, is_nullable
|
|
7519
|
+
, CASE WHEN a.atttypid = ANY ('{int,int8,int2}'::regtype[])
|
|
7520
|
+
AND EXISTS (
|
|
7521
|
+
SELECT FROM pg_attrdef ad
|
|
7522
|
+
WHERE ad.adrelid = a.attrelid
|
|
7523
|
+
AND ad.adnum = a.attnum
|
|
7524
|
+
AND pg_get_expr(ad.adbin, ad.adrelid)
|
|
7525
|
+
= 'nextval('''
|
|
7526
|
+
|| (pg_get_serial_sequence (a.attrelid::regclass::text
|
|
7527
|
+
, a.attname))::regclass
|
|
7528
|
+
|| '''::regclass)'
|
|
7529
|
+
)
|
|
7530
|
+
THEN CASE a.atttypid
|
|
7531
|
+
WHEN 'int'::regtype THEN 'serial'
|
|
7532
|
+
WHEN 'int8'::regtype THEN 'bigserial'
|
|
7533
|
+
WHEN 'int2'::regtype THEN 'smallserial'
|
|
7534
|
+
END
|
|
7535
|
+
ELSE format_type(a.atttypid, a.atttypmod)
|
|
7536
|
+
END AS data_type, INFORMATION_SCHEMA.COLUMNS.table_name, INFORMATION_SCHEMA.COLUMNS.column_name, INFORMATION_SCHEMA.COLUMNS.column_default
|
|
7537
|
+
FROM pg_attribute a
|
|
7538
|
+
JOIN INFORMATION_SCHEMA.COLUMNS ON INFORMATION_SCHEMA.COLUMNS.column_name = a.attname
|
|
7539
|
+
WHERE a.attrelid = '"${tableName}"'::regclass and INFORMATION_SCHEMA.COLUMNS.table_name = '${tableName}'
|
|
7540
|
+
AND a.attnum > 0
|
|
7541
|
+
AND NOT a.attisdropped
|
|
7542
|
+
ORDER BY a.attnum;`)
|
|
7543
|
+
);
|
|
7544
|
+
const tableConstraints = await db.execute(
|
|
7545
|
+
import_sql.sql.raw(`SELECT c.column_name, c.data_type, constraint_type, constraint_name
|
|
7546
|
+
FROM information_schema.table_constraints tc
|
|
7547
|
+
JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_name)
|
|
7548
|
+
JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema
|
|
7549
|
+
AND tc.table_name = c.table_name AND ccu.column_name = c.column_name
|
|
7550
|
+
WHERE tc.table_name = '${tableName}';`)
|
|
7551
|
+
);
|
|
7552
|
+
const tableForeignKeys = await db.execute(
|
|
7553
|
+
import_sql.sql.raw(`SELECT
|
|
7554
|
+
tc.table_schema,
|
|
7555
|
+
tc.constraint_name,
|
|
7556
|
+
tc.table_name,
|
|
7557
|
+
kcu.column_name,
|
|
7558
|
+
ccu.table_schema AS foreign_table_schema,
|
|
7559
|
+
ccu.table_name AS foreign_table_name,
|
|
7560
|
+
ccu.column_name AS foreign_column_name,
|
|
7561
|
+
rc.delete_rule, rc.update_rule
|
|
7562
|
+
FROM
|
|
7563
|
+
information_schema.table_constraints AS tc
|
|
7564
|
+
JOIN information_schema.key_column_usage AS kcu
|
|
7565
|
+
ON tc.constraint_name = kcu.constraint_name
|
|
7566
|
+
AND tc.table_schema = kcu.table_schema
|
|
7567
|
+
JOIN information_schema.constraint_column_usage AS ccu
|
|
7568
|
+
ON ccu.constraint_name = tc.constraint_name
|
|
7569
|
+
AND ccu.table_schema = tc.table_schema
|
|
7570
|
+
JOIN information_schema.referential_constraints AS rc
|
|
7571
|
+
ON ccu.constraint_name = rc.constraint_name
|
|
7572
|
+
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name='${tableName}';`)
|
|
7573
|
+
);
|
|
7574
|
+
for (const fk4 of tableForeignKeys.rows) {
|
|
7575
|
+
const columnFrom = fk4.column_name;
|
|
7576
|
+
const tableTo = fk4.foreign_table_name;
|
|
7577
|
+
const columnTo = fk4.foreign_column_name;
|
|
7578
|
+
const foreignKeyName = fk4.constraint_name;
|
|
7579
|
+
const onUpdate = fk4.update_rule.toLowerCase();
|
|
7580
|
+
const onDelete = fk4.delete_rule.toLowerCase();
|
|
7581
|
+
if (typeof foreignKeysToReturn[foreignKeyName] !== "undefined") {
|
|
7582
|
+
foreignKeysToReturn[foreignKeyName].columnsFrom.push(columnFrom);
|
|
7583
|
+
foreignKeysToReturn[foreignKeyName].columnsTo.push(columnTo);
|
|
7584
|
+
} else {
|
|
7585
|
+
foreignKeysToReturn[foreignKeyName] = {
|
|
7586
|
+
name: foreignKeyName,
|
|
7587
|
+
tableFrom: tableName,
|
|
7588
|
+
tableTo,
|
|
7589
|
+
columnsFrom: [columnFrom],
|
|
7590
|
+
columnsTo: [columnTo],
|
|
7591
|
+
onDelete,
|
|
7592
|
+
onUpdate
|
|
7593
|
+
};
|
|
7594
|
+
}
|
|
7595
|
+
foreignKeysToReturn[foreignKeyName].columnsFrom = [
|
|
7596
|
+
...new Set(foreignKeysToReturn[foreignKeyName].columnsFrom)
|
|
7597
|
+
];
|
|
7598
|
+
foreignKeysToReturn[foreignKeyName].columnsTo = [
|
|
7599
|
+
...new Set(foreignKeysToReturn[foreignKeyName].columnsTo)
|
|
7600
|
+
];
|
|
7601
|
+
}
|
|
7602
|
+
for (const columnResponse of tableResponse.rows) {
|
|
7603
|
+
const columnName = columnResponse.attname;
|
|
7604
|
+
const columnType = columnResponse.data_type;
|
|
7605
|
+
const primaryKey = tableConstraints.rows.filter(
|
|
7606
|
+
(mapRow) => columnName === mapRow.column_name && mapRow.constraint_type === "PRIMARY KEY"
|
|
7607
|
+
);
|
|
7608
|
+
const uniqueKey = tableConstraints.rows.filter(
|
|
7609
|
+
(mapRow) => columnName === mapRow.column_name && mapRow.constraint_type === "UNIQUE"
|
|
7610
|
+
);
|
|
7611
|
+
const defaultValue = columnResponse.column_default === null ? void 0 : columnResponse.column_default;
|
|
7612
|
+
const isSerial = columnType === "serial";
|
|
7613
|
+
columnToReturn[columnName] = {
|
|
7614
|
+
name: columnName,
|
|
7615
|
+
type: columnType.replace("character varying", "varchar").trimChar('"'),
|
|
7616
|
+
primaryKey: !!primaryKey[0],
|
|
7617
|
+
notNull: columnResponse.is_nullable === "NO"
|
|
7618
|
+
};
|
|
7619
|
+
if (!isSerial && typeof defaultValue !== "undefined") {
|
|
7620
|
+
columnToReturn[columnName].default = defaultValue;
|
|
7621
|
+
}
|
|
7622
|
+
}
|
|
7623
|
+
const dbIndexes = await db.execute(
|
|
7624
|
+
import_sql.sql.raw(`select
|
|
7625
|
+
t.relname as table_name,
|
|
7626
|
+
i.relname as index_name,
|
|
7627
|
+
ix.indisunique as is_unique,
|
|
7628
|
+
a.attname as column_name
|
|
7629
|
+
from
|
|
7630
|
+
pg_class t,
|
|
7631
|
+
pg_class i,
|
|
7632
|
+
pg_index ix,
|
|
7633
|
+
pg_attribute a
|
|
7634
|
+
where
|
|
7635
|
+
t.oid = ix.indrelid
|
|
7636
|
+
and i.oid = ix.indexrelid
|
|
7637
|
+
and a.attrelid = t.oid
|
|
7638
|
+
and a.attnum = ANY(ix.indkey)
|
|
7639
|
+
and t.relkind = 'r'
|
|
7640
|
+
and t.relname = '${tableName}'
|
|
7641
|
+
and ix.indisprimary = false
|
|
7642
|
+
order by
|
|
7643
|
+
t.relname,
|
|
7644
|
+
i.relname;`)
|
|
7645
|
+
);
|
|
7646
|
+
for (const dbIndex of dbIndexes.rows) {
|
|
7647
|
+
const indexName2 = dbIndex.index_name;
|
|
7648
|
+
const indexColumnName = dbIndex.column_name;
|
|
7649
|
+
const indexIsUnique = dbIndex.is_unique;
|
|
7650
|
+
if (typeof indexToReturn[indexName2] !== "undefined") {
|
|
7651
|
+
indexToReturn[indexName2].columns.push(indexColumnName);
|
|
7652
|
+
} else {
|
|
7653
|
+
indexToReturn[indexName2] = {
|
|
7654
|
+
name: indexName2,
|
|
7655
|
+
columns: [indexColumnName],
|
|
7656
|
+
isUnique: indexIsUnique
|
|
7657
|
+
};
|
|
7658
|
+
}
|
|
7659
|
+
}
|
|
7660
|
+
result[tableName] = {
|
|
7661
|
+
name: tableName,
|
|
7662
|
+
columns: columnToReturn,
|
|
7663
|
+
indexes: indexToReturn,
|
|
7664
|
+
foreignKeys: foreignKeysToReturn
|
|
7665
|
+
};
|
|
7666
|
+
progressCallback(`fetched ${tableName} metadata`);
|
|
7667
|
+
} catch (e) {
|
|
7668
|
+
rej(e);
|
|
7669
|
+
return;
|
|
7670
|
+
}
|
|
7671
|
+
res("");
|
|
7672
|
+
});
|
|
7673
|
+
});
|
|
7674
|
+
for await (const _ of all) {
|
|
7675
|
+
}
|
|
7676
|
+
const allEnums = await db.execute(
|
|
7677
|
+
import_sql.sql.raw(`select n.nspname as enum_schema,
|
|
7678
|
+
t.typname as enum_name,
|
|
7679
|
+
e.enumlabel as enum_value
|
|
7680
|
+
from pg_type t
|
|
7681
|
+
join pg_enum e on t.oid = e.enumtypid
|
|
7682
|
+
join pg_catalog.pg_namespace n ON n.oid = t.typnamespace;`)
|
|
7683
|
+
);
|
|
7684
|
+
const enumsToReturn = {};
|
|
7685
|
+
for (const dbEnum of allEnums.rows) {
|
|
7686
|
+
const enumName = dbEnum.enum_name;
|
|
7687
|
+
const enumValue = dbEnum.enum_value;
|
|
7688
|
+
if (enumsToReturn[enumName] !== void 0 && enumsToReturn[enumName] !== null) {
|
|
7689
|
+
enumsToReturn[enumName].values[enumValue] = enumValue;
|
|
7690
|
+
} else {
|
|
7691
|
+
enumsToReturn[enumName] = {
|
|
7692
|
+
name: enumName,
|
|
7693
|
+
values: { [enumValue]: enumValue }
|
|
7694
|
+
};
|
|
7695
|
+
}
|
|
7696
|
+
}
|
|
7697
|
+
return { version: "3", dialect: "pg", tables: result, enums: enumsToReturn };
|
|
7698
|
+
};
|
|
7491
7699
|
}
|
|
7492
7700
|
});
|
|
7493
7701
|
|
|
@@ -7540,32 +7748,32 @@ var init_mysqlSerializer = __esm({
|
|
|
7540
7748
|
const columnsObject = {};
|
|
7541
7749
|
const indexesObject = {};
|
|
7542
7750
|
const foreignKeysObject = {};
|
|
7543
|
-
(0, import_utils2.getTableColumns)(table4).forEach((
|
|
7544
|
-
const notNull =
|
|
7545
|
-
const primaryKey =
|
|
7751
|
+
(0, import_utils2.getTableColumns)(table4).forEach((column5) => {
|
|
7752
|
+
const notNull = column5.notNull;
|
|
7753
|
+
const primaryKey = column5.primary;
|
|
7546
7754
|
const columnToSet = {
|
|
7547
|
-
name:
|
|
7548
|
-
type:
|
|
7755
|
+
name: column5.name,
|
|
7756
|
+
type: column5.getSQLType(),
|
|
7549
7757
|
primaryKey,
|
|
7550
7758
|
notNull,
|
|
7551
|
-
autoincrement:
|
|
7759
|
+
autoincrement: column5 instanceof import_common.MySqlColumnWithAutoIncrement ? column5.autoIncrement : false
|
|
7552
7760
|
};
|
|
7553
|
-
if (
|
|
7554
|
-
if (
|
|
7555
|
-
columnToSet.default =
|
|
7761
|
+
if (column5.default !== void 0) {
|
|
7762
|
+
if (column5.default instanceof import_sql2.SQL) {
|
|
7763
|
+
columnToSet.default = column5.default.queryChunks.map((it) => {
|
|
7556
7764
|
if (typeof it === "string") {
|
|
7557
7765
|
return `${it}`;
|
|
7558
7766
|
}
|
|
7559
7767
|
throw new Error();
|
|
7560
7768
|
}).join();
|
|
7561
7769
|
} else {
|
|
7562
|
-
columnToSet.default = typeof
|
|
7770
|
+
columnToSet.default = typeof column5.default === "string" ? `'${column5.default}'` : column5.default;
|
|
7563
7771
|
}
|
|
7564
|
-
if (["blob", "text", "json"].includes(
|
|
7772
|
+
if (["blob", "text", "json"].includes(column5.getSQLType())) {
|
|
7565
7773
|
columnToSet.default = `(${columnToSet.default})`;
|
|
7566
7774
|
}
|
|
7567
7775
|
}
|
|
7568
|
-
columnsObject[
|
|
7776
|
+
columnsObject[column5.name] = columnToSet;
|
|
7569
7777
|
});
|
|
7570
7778
|
const foreignKeys = (0, import_utils2.getTableForeignKeys)(table4).map((fk4) => {
|
|
7571
7779
|
const name = fk4.getName();
|
|
@@ -7668,31 +7876,31 @@ var init_sqliteSerializer = __esm({
|
|
|
7668
7876
|
const columnsObject = {};
|
|
7669
7877
|
const indexesObject = {};
|
|
7670
7878
|
const foreignKeysObject = {};
|
|
7671
|
-
(0, import_utils3.getTableColumns)(table4).forEach((
|
|
7672
|
-
const notNull =
|
|
7673
|
-
const primaryKey =
|
|
7879
|
+
(0, import_utils3.getTableColumns)(table4).forEach((column5) => {
|
|
7880
|
+
const notNull = column5.notNull;
|
|
7881
|
+
const primaryKey = column5.primary;
|
|
7674
7882
|
const columnToSet = {
|
|
7675
|
-
name:
|
|
7676
|
-
type:
|
|
7883
|
+
name: column5.name,
|
|
7884
|
+
type: column5.getSQLType(),
|
|
7677
7885
|
primaryKey,
|
|
7678
7886
|
notNull
|
|
7679
7887
|
};
|
|
7680
|
-
if (
|
|
7681
|
-
if (
|
|
7682
|
-
columnToSet.default =
|
|
7888
|
+
if (column5.default !== void 0) {
|
|
7889
|
+
if (column5.default instanceof import_sql3.SQL) {
|
|
7890
|
+
columnToSet.default = column5.default.queryChunks.map((it) => {
|
|
7683
7891
|
if (typeof it === "string") {
|
|
7684
7892
|
return `${it}`;
|
|
7685
7893
|
}
|
|
7686
7894
|
throw new Error("Only strings are allowed in .default()");
|
|
7687
7895
|
}).join();
|
|
7688
7896
|
} else {
|
|
7689
|
-
columnToSet.default = typeof
|
|
7897
|
+
columnToSet.default = typeof column5.default === "string" ? `'${column5.default}'` : column5.default;
|
|
7690
7898
|
}
|
|
7691
|
-
if (["blob", "text", "json"].includes(
|
|
7899
|
+
if (["blob", "text", "json"].includes(column5.getSQLType())) {
|
|
7692
7900
|
columnToSet.default = `(${columnToSet.default})`;
|
|
7693
7901
|
}
|
|
7694
7902
|
}
|
|
7695
|
-
columnsObject[
|
|
7903
|
+
columnsObject[column5.name] = columnToSet;
|
|
7696
7904
|
});
|
|
7697
7905
|
const foreignKeys = (0, import_utils3.getTableForeignKeys)(table4).map((fk4) => {
|
|
7698
7906
|
const name = fk4.getName();
|
|
@@ -13857,9 +14065,9 @@ var require_lib = __commonJS({
|
|
|
13857
14065
|
}
|
|
13858
14066
|
});
|
|
13859
14067
|
|
|
13860
|
-
// node_modules/.pnpm/hanji@0.0.
|
|
14068
|
+
// node_modules/.pnpm/hanji@0.0.4/node_modules/hanji/readline.js
|
|
13861
14069
|
var require_readline = __commonJS({
|
|
13862
|
-
"node_modules/.pnpm/hanji@0.0.
|
|
14070
|
+
"node_modules/.pnpm/hanji@0.0.4/node_modules/hanji/readline.js"(exports) {
|
|
13863
14071
|
"use strict";
|
|
13864
14072
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13865
14073
|
exports.prepareReadLine = void 0;
|
|
@@ -13943,9 +14151,9 @@ var require_src2 = __commonJS({
|
|
|
13943
14151
|
}
|
|
13944
14152
|
});
|
|
13945
14153
|
|
|
13946
|
-
// node_modules/.pnpm/hanji@0.0.
|
|
14154
|
+
// node_modules/.pnpm/hanji@0.0.4/node_modules/hanji/utils.js
|
|
13947
14155
|
var require_utils = __commonJS({
|
|
13948
|
-
"node_modules/.pnpm/hanji@0.0.
|
|
14156
|
+
"node_modules/.pnpm/hanji@0.0.4/node_modules/hanji/utils.js"(exports) {
|
|
13949
14157
|
"use strict";
|
|
13950
14158
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13951
14159
|
exports.clear = void 0;
|
|
@@ -14121,15 +14329,42 @@ var require_lodash = __commonJS({
|
|
|
14121
14329
|
}
|
|
14122
14330
|
});
|
|
14123
14331
|
|
|
14124
|
-
// node_modules/.pnpm/hanji@0.0.
|
|
14332
|
+
// node_modules/.pnpm/hanji@0.0.4/node_modules/hanji/index.js
|
|
14125
14333
|
var require_hanji = __commonJS({
|
|
14126
|
-
"node_modules/.pnpm/hanji@0.0.
|
|
14334
|
+
"node_modules/.pnpm/hanji@0.0.4/node_modules/hanji/index.js"(exports) {
|
|
14127
14335
|
"use strict";
|
|
14336
|
+
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
14337
|
+
function adopt(value) {
|
|
14338
|
+
return value instanceof P ? value : new P(function(resolve) {
|
|
14339
|
+
resolve(value);
|
|
14340
|
+
});
|
|
14341
|
+
}
|
|
14342
|
+
return new (P || (P = Promise))(function(resolve, reject) {
|
|
14343
|
+
function fulfilled(value) {
|
|
14344
|
+
try {
|
|
14345
|
+
step(generator.next(value));
|
|
14346
|
+
} catch (e) {
|
|
14347
|
+
reject(e);
|
|
14348
|
+
}
|
|
14349
|
+
}
|
|
14350
|
+
function rejected(value) {
|
|
14351
|
+
try {
|
|
14352
|
+
step(generator["throw"](value));
|
|
14353
|
+
} catch (e) {
|
|
14354
|
+
reject(e);
|
|
14355
|
+
}
|
|
14356
|
+
}
|
|
14357
|
+
function step(result) {
|
|
14358
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
14359
|
+
}
|
|
14360
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14361
|
+
});
|
|
14362
|
+
};
|
|
14128
14363
|
var __importDefault = exports && exports.__importDefault || function(mod) {
|
|
14129
14364
|
return mod && mod.__esModule ? mod : { "default": mod };
|
|
14130
14365
|
};
|
|
14131
14366
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14132
|
-
exports.onTerminate = exports.render = exports.Terminal = exports.deferred = exports.SelectState = exports.Prompt = void 0;
|
|
14367
|
+
exports.onTerminate = exports.renderWithTask = exports.render = exports.TaskTerminal = exports.TaskView = exports.Terminal = exports.deferred = exports.SelectState = exports.Prompt = void 0;
|
|
14133
14368
|
var readline_1 = require_readline();
|
|
14134
14369
|
var sisteransi_1 = require_src2();
|
|
14135
14370
|
var utils_1 = require_utils();
|
|
@@ -14283,7 +14518,52 @@ var require_hanji = __commonJS({
|
|
|
14283
14518
|
}
|
|
14284
14519
|
};
|
|
14285
14520
|
exports.Terminal = Terminal;
|
|
14286
|
-
|
|
14521
|
+
var TaskView2 = class {
|
|
14522
|
+
constructor() {
|
|
14523
|
+
this.attachCallbacks = [];
|
|
14524
|
+
this.detachCallbacks = [];
|
|
14525
|
+
}
|
|
14526
|
+
requestLayout() {
|
|
14527
|
+
this.terminal.requestLayout();
|
|
14528
|
+
}
|
|
14529
|
+
attach(terminal) {
|
|
14530
|
+
this.terminal = terminal;
|
|
14531
|
+
this.attachCallbacks.forEach((it) => it(terminal));
|
|
14532
|
+
}
|
|
14533
|
+
detach(terminal) {
|
|
14534
|
+
this.detachCallbacks.forEach((it) => it(terminal));
|
|
14535
|
+
this.terminal = void 0;
|
|
14536
|
+
}
|
|
14537
|
+
on(type, callback) {
|
|
14538
|
+
if (type === "attach") {
|
|
14539
|
+
this.attachCallbacks.push(callback);
|
|
14540
|
+
} else if (type === "detach") {
|
|
14541
|
+
this.detachCallbacks.push(callback);
|
|
14542
|
+
}
|
|
14543
|
+
}
|
|
14544
|
+
};
|
|
14545
|
+
exports.TaskView = TaskView2;
|
|
14546
|
+
var TaskTerminal = class {
|
|
14547
|
+
constructor(view, stdout) {
|
|
14548
|
+
this.view = view;
|
|
14549
|
+
this.stdout = stdout;
|
|
14550
|
+
this.text = "";
|
|
14551
|
+
this.view.attach(this);
|
|
14552
|
+
}
|
|
14553
|
+
requestLayout() {
|
|
14554
|
+
const string = this.view.render();
|
|
14555
|
+
const clearPrefix = this.text ? (0, utils_1.clear)(this.text, this.stdout.columns) : "";
|
|
14556
|
+
this.text = string;
|
|
14557
|
+
this.stdout.write(`${clearPrefix}${string}`);
|
|
14558
|
+
}
|
|
14559
|
+
clear() {
|
|
14560
|
+
this.view.detach(this);
|
|
14561
|
+
const clearPrefix = this.text ? (0, utils_1.clear)(this.text, this.stdout.columns) : "";
|
|
14562
|
+
this.stdout.write(`${clearPrefix}`);
|
|
14563
|
+
}
|
|
14564
|
+
};
|
|
14565
|
+
exports.TaskTerminal = TaskTerminal;
|
|
14566
|
+
function render5(view) {
|
|
14287
14567
|
const { stdin, stdout, closable } = (0, readline_1.prepareReadLine)();
|
|
14288
14568
|
if (view instanceof Prompt2) {
|
|
14289
14569
|
const terminal = new Terminal(view, stdin, stdout, closable);
|
|
@@ -14292,9 +14572,20 @@ var require_hanji = __commonJS({
|
|
|
14292
14572
|
}
|
|
14293
14573
|
stdout.write(`${view}
|
|
14294
14574
|
`);
|
|
14575
|
+
closable.close();
|
|
14295
14576
|
return;
|
|
14296
14577
|
}
|
|
14297
|
-
exports.render =
|
|
14578
|
+
exports.render = render5;
|
|
14579
|
+
function renderWithTask2(view, task) {
|
|
14580
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
14581
|
+
const terminal = new TaskTerminal(view, process.stdout);
|
|
14582
|
+
terminal.requestLayout();
|
|
14583
|
+
const result = yield task;
|
|
14584
|
+
terminal.clear();
|
|
14585
|
+
return result;
|
|
14586
|
+
});
|
|
14587
|
+
}
|
|
14588
|
+
exports.renderWithTask = renderWithTask2;
|
|
14298
14589
|
var terminateHandler;
|
|
14299
14590
|
function onTerminate(callback) {
|
|
14300
14591
|
terminateHandler = callback;
|
|
@@ -17453,6 +17744,13 @@ var optionalType = ZodOptional.create;
|
|
|
17453
17744
|
var nullableType = ZodNullable.create;
|
|
17454
17745
|
var preprocessType = ZodEffects.createWithPreprocess;
|
|
17455
17746
|
var pipelineType = ZodPipeline.create;
|
|
17747
|
+
var coerce = {
|
|
17748
|
+
string: (arg) => ZodString.create({ ...arg, coerce: true }),
|
|
17749
|
+
number: (arg) => ZodNumber.create({ ...arg, coerce: true }),
|
|
17750
|
+
boolean: (arg) => ZodBoolean.create({ ...arg, coerce: true }),
|
|
17751
|
+
bigint: (arg) => ZodBigInt.create({ ...arg, coerce: true }),
|
|
17752
|
+
date: (arg) => ZodDate.create({ ...arg, coerce: true })
|
|
17753
|
+
};
|
|
17456
17754
|
|
|
17457
17755
|
// src/serializer/mysqlSchema.ts
|
|
17458
17756
|
var index = objectType({
|
|
@@ -17811,26 +18109,26 @@ var import_crypto = require("crypto");
|
|
|
17811
18109
|
var import_fs = __toESM(require("fs"));
|
|
17812
18110
|
var import_node = __toESM(require_node2());
|
|
17813
18111
|
var import_path = __toESM(require("path"));
|
|
17814
|
-
var serialize = (path3,
|
|
18112
|
+
var serialize = (path3, dialect8) => {
|
|
17815
18113
|
const fileName = import_fs.default.lstatSync(path3).isDirectory() ? null : import_path.default.resolve(path3);
|
|
17816
18114
|
const filenames = fileName ? [fileName] : import_fs.default.readdirSync(path3).map((it) => import_path.default.join(import_path.default.resolve(path3), it));
|
|
17817
18115
|
const { unregister } = (0, import_node.register)({
|
|
17818
18116
|
target: "node14",
|
|
17819
18117
|
loader: "ts"
|
|
17820
18118
|
});
|
|
17821
|
-
if (
|
|
18119
|
+
if (dialect8 === "pg") {
|
|
17822
18120
|
const { prepareFromPgImports: prepareFromPgImports2 } = (init_pgImports(), __toCommonJS(pgImports_exports));
|
|
17823
18121
|
const { generatePgSnapshot: generatePgSnapshot2 } = (init_pgSerializer(), __toCommonJS(pgSerializer_exports));
|
|
17824
18122
|
const { tables, enums } = prepareFromPgImports2(filenames);
|
|
17825
18123
|
unregister();
|
|
17826
18124
|
return generatePgSnapshot2(tables, enums);
|
|
17827
|
-
} else if (
|
|
18125
|
+
} else if (dialect8 === "mysql") {
|
|
17828
18126
|
const { prepareFromMySqlImports: prepareFromMySqlImports2 } = (init_mysqlImports(), __toCommonJS(mysqlImports_exports));
|
|
17829
18127
|
const { generateMySqlSnapshot: generateMySqlSnapshot2 } = (init_mysqlSerializer(), __toCommonJS(mysqlSerializer_exports));
|
|
17830
18128
|
const { tables, enums } = prepareFromMySqlImports2(filenames);
|
|
17831
18129
|
unregister();
|
|
17832
18130
|
return generateMySqlSnapshot2(tables, enums);
|
|
17833
|
-
} else if (
|
|
18131
|
+
} else if (dialect8 === "sqlite") {
|
|
17834
18132
|
const { prepareFromSqliteImports: prepareFromSqliteImports2 } = (init_sqliteImports(), __toCommonJS(sqliteImports_exports));
|
|
17835
18133
|
const { generateSqliteSnapshot: generateSqliteSnapshot2 } = (init_sqliteSerializer(), __toCommonJS(sqliteSerializer_exports));
|
|
17836
18134
|
const { tables, enums } = prepareFromSqliteImports2(filenames);
|
|
@@ -17844,11 +18142,34 @@ var serialize = (path3, dialect7) => {
|
|
|
17844
18142
|
var serializer_default = serialize;
|
|
17845
18143
|
|
|
17846
18144
|
// src/sqlgenerator.ts
|
|
18145
|
+
var pgNativeTypes = /* @__PURE__ */ new Set([
|
|
18146
|
+
"uuid",
|
|
18147
|
+
"smallint",
|
|
18148
|
+
"integer",
|
|
18149
|
+
"bigint",
|
|
18150
|
+
"boolean",
|
|
18151
|
+
"text",
|
|
18152
|
+
"varchar",
|
|
18153
|
+
"serial",
|
|
18154
|
+
"bigserial",
|
|
18155
|
+
"decimal",
|
|
18156
|
+
"numeric",
|
|
18157
|
+
"real",
|
|
18158
|
+
"json",
|
|
18159
|
+
"jsonb",
|
|
18160
|
+
"time",
|
|
18161
|
+
"timestamp",
|
|
18162
|
+
"date",
|
|
18163
|
+
"interval",
|
|
18164
|
+
"bigint",
|
|
18165
|
+
"bigserial",
|
|
18166
|
+
"double precision"
|
|
18167
|
+
]);
|
|
17847
18168
|
var Convertor = class {
|
|
17848
18169
|
};
|
|
17849
18170
|
var PgCreateTableConvertor = class extends Convertor {
|
|
17850
|
-
can(statement,
|
|
17851
|
-
return statement.type === "create_table" &&
|
|
18171
|
+
can(statement, dialect8) {
|
|
18172
|
+
return statement.type === "create_table" && dialect8 === "pg";
|
|
17852
18173
|
}
|
|
17853
18174
|
convert(st) {
|
|
17854
18175
|
const { tableName, columns } = st;
|
|
@@ -17856,11 +18177,12 @@ var PgCreateTableConvertor = class extends Convertor {
|
|
|
17856
18177
|
statement += `CREATE TABLE IF NOT EXISTS ${tableName} (
|
|
17857
18178
|
`;
|
|
17858
18179
|
for (let i = 0; i < columns.length; i++) {
|
|
17859
|
-
const
|
|
17860
|
-
const primaryKeyStatement =
|
|
17861
|
-
const notNullStatement =
|
|
17862
|
-
const defaultStatement =
|
|
17863
|
-
|
|
18180
|
+
const column5 = columns[i];
|
|
18181
|
+
const primaryKeyStatement = column5.primaryKey ? "PRIMARY KEY" : "";
|
|
18182
|
+
const notNullStatement = column5.notNull ? "NOT NULL" : "";
|
|
18183
|
+
const defaultStatement = column5.default !== void 0 ? `DEFAULT ${column5.default}` : "";
|
|
18184
|
+
const type = pgNativeTypes.has(column5.type) ? column5.type : `"${column5.type}"`;
|
|
18185
|
+
statement += " " + `"${column5.name}" ${type} ${primaryKeyStatement} ${defaultStatement} ${notNullStatement}`.replace(/ +/g, " ").trim();
|
|
17864
18186
|
statement += (i === columns.length - 1 ? "" : ",") + "\n";
|
|
17865
18187
|
}
|
|
17866
18188
|
statement += `);`;
|
|
@@ -17870,8 +18192,8 @@ var PgCreateTableConvertor = class extends Convertor {
|
|
|
17870
18192
|
}
|
|
17871
18193
|
};
|
|
17872
18194
|
var MySqlCreateTableConvertor = class extends Convertor {
|
|
17873
|
-
can(statement,
|
|
17874
|
-
return statement.type === "create_table" &&
|
|
18195
|
+
can(statement, dialect8) {
|
|
18196
|
+
return statement.type === "create_table" && dialect8 === "mysql";
|
|
17875
18197
|
}
|
|
17876
18198
|
convert(st) {
|
|
17877
18199
|
const { tableName, columns } = st;
|
|
@@ -17879,12 +18201,12 @@ var MySqlCreateTableConvertor = class extends Convertor {
|
|
|
17879
18201
|
statement += `CREATE TABLE ${tableName} (
|
|
17880
18202
|
`;
|
|
17881
18203
|
for (let i = 0; i < columns.length; i++) {
|
|
17882
|
-
const
|
|
17883
|
-
const primaryKeyStatement =
|
|
17884
|
-
const notNullStatement =
|
|
17885
|
-
const defaultStatement =
|
|
17886
|
-
const autoincrementStatement =
|
|
17887
|
-
statement += " " + `\`${
|
|
18204
|
+
const column5 = columns[i];
|
|
18205
|
+
const primaryKeyStatement = column5.primaryKey ? "PRIMARY KEY" : "";
|
|
18206
|
+
const notNullStatement = column5.notNull ? "NOT NULL" : "";
|
|
18207
|
+
const defaultStatement = column5.default !== void 0 ? `DEFAULT ${column5.default}` : "";
|
|
18208
|
+
const autoincrementStatement = column5.autoincrement ? "AUTO_INCREMENT" : "";
|
|
18209
|
+
statement += " " + `\`${column5.name}\` ${column5.type} ${autoincrementStatement} ${primaryKeyStatement} ${defaultStatement} ${notNullStatement}`.replace(/ +/g, " ").trim();
|
|
17888
18210
|
statement += (i === columns.length - 1 ? "" : ",") + "\n";
|
|
17889
18211
|
}
|
|
17890
18212
|
statement += `);`;
|
|
@@ -17894,22 +18216,22 @@ var MySqlCreateTableConvertor = class extends Convertor {
|
|
|
17894
18216
|
}
|
|
17895
18217
|
};
|
|
17896
18218
|
var SQLiteCreateTableConvertor = class extends Convertor {
|
|
17897
|
-
can(statement,
|
|
17898
|
-
return statement.type === "sqlite_create_table" &&
|
|
18219
|
+
can(statement, dialect8) {
|
|
18220
|
+
return statement.type === "sqlite_create_table" && dialect8 === "sqlite";
|
|
17899
18221
|
}
|
|
17900
18222
|
convert(st) {
|
|
17901
18223
|
const { tableName, columns, referenceData } = st;
|
|
17902
18224
|
let statement = "";
|
|
17903
|
-
statement += `CREATE TABLE ${tableName} (
|
|
17904
|
-
`;
|
|
18225
|
+
statement += `CREATE TABLE ${tableName} (`;
|
|
17905
18226
|
for (let i = 0; i < columns.length; i++) {
|
|
17906
|
-
const
|
|
17907
|
-
const primaryKeyStatement =
|
|
17908
|
-
const notNullStatement =
|
|
17909
|
-
const defaultStatement =
|
|
17910
|
-
const autoincrementStatement =
|
|
17911
|
-
statement += " "
|
|
17912
|
-
statement +=
|
|
18227
|
+
const column5 = columns[i];
|
|
18228
|
+
const primaryKeyStatement = column5.primaryKey ? "PRIMARY KEY" : "";
|
|
18229
|
+
const notNullStatement = column5.notNull ? "NOT NULL" : "";
|
|
18230
|
+
const defaultStatement = column5.default !== void 0 ? `DEFAULT ${column5.default}` : "";
|
|
18231
|
+
const autoincrementStatement = column5.autoincrement ? "AUTO_INCREMENT" : "";
|
|
18232
|
+
statement += "\n ";
|
|
18233
|
+
statement += `\`${column5.name}\` ${column5.type} ${autoincrementStatement} ${primaryKeyStatement} ${defaultStatement} ${notNullStatement}`.squashSpaces();
|
|
18234
|
+
statement += ",";
|
|
17913
18235
|
}
|
|
17914
18236
|
for (let i = 0; i < referenceData.length; i++) {
|
|
17915
18237
|
const referenceAsString = referenceData[i];
|
|
@@ -17926,9 +18248,13 @@ var SQLiteCreateTableConvertor = class extends Convertor {
|
|
|
17926
18248
|
const onUpdateStatement = onUpdate ? `ON UPDATE ${onUpdate}` : "";
|
|
17927
18249
|
const fromColumnsString = columnsFrom.map((it) => `\`${it}\``).join(",");
|
|
17928
18250
|
const toColumnsString = columnsTo.map((it) => `\`${it}\``).join(",");
|
|
17929
|
-
statement += " "
|
|
17930
|
-
statement +=
|
|
18251
|
+
statement += "\n ";
|
|
18252
|
+
statement += `FOREIGN KEY (${fromColumnsString}) REFERENCES ${tableTo}(${toColumnsString}) ${onUpdateStatement} ${onDeleteStatement}`.squashSpaces();
|
|
18253
|
+
statement += ",";
|
|
17931
18254
|
}
|
|
18255
|
+
statement.trimChar(",");
|
|
18256
|
+
statement += `
|
|
18257
|
+
`;
|
|
17932
18258
|
statement += `);`;
|
|
17933
18259
|
statement += `
|
|
17934
18260
|
`;
|
|
@@ -17946,7 +18272,7 @@ var CreateTypeEnumConvertor = class extends Convertor {
|
|
|
17946
18272
|
valuesStatement += ")";
|
|
17947
18273
|
let statement = "DO $$ BEGIN";
|
|
17948
18274
|
statement += "\n";
|
|
17949
|
-
statement += ` CREATE TYPE ${name} AS ENUM${valuesStatement};`;
|
|
18275
|
+
statement += ` CREATE TYPE "${name}" AS ENUM${valuesStatement};`;
|
|
17950
18276
|
statement += "\n";
|
|
17951
18277
|
statement += "EXCEPTION";
|
|
17952
18278
|
statement += "\n";
|
|
@@ -17963,7 +18289,7 @@ var AlterTypeAddValueConvertor = class extends Convertor {
|
|
|
17963
18289
|
}
|
|
17964
18290
|
convert(st) {
|
|
17965
18291
|
const { name, value } = st;
|
|
17966
|
-
return `ALTER TYPE ${name} ADD VALUE '${value}';`;
|
|
18292
|
+
return `ALTER TYPE "${name}" ADD VALUE '${value}';`;
|
|
17967
18293
|
}
|
|
17968
18294
|
};
|
|
17969
18295
|
var DropTableConvertor = class extends Convertor {
|
|
@@ -17976,8 +18302,8 @@ var DropTableConvertor = class extends Convertor {
|
|
|
17976
18302
|
}
|
|
17977
18303
|
};
|
|
17978
18304
|
var PgRenameTableConvertor = class extends Convertor {
|
|
17979
|
-
can(statement,
|
|
17980
|
-
return statement.type === "rename_table" &&
|
|
18305
|
+
can(statement, dialect8) {
|
|
18306
|
+
return statement.type === "rename_table" && dialect8 === "pg";
|
|
17981
18307
|
}
|
|
17982
18308
|
convert(statement) {
|
|
17983
18309
|
const { tableNameFrom, tableNameTo } = statement;
|
|
@@ -17985,8 +18311,8 @@ var PgRenameTableConvertor = class extends Convertor {
|
|
|
17985
18311
|
}
|
|
17986
18312
|
};
|
|
17987
18313
|
var SqliteRenameTableConvertor = class extends Convertor {
|
|
17988
|
-
can(statement,
|
|
17989
|
-
return statement.type === "rename_table" &&
|
|
18314
|
+
can(statement, dialect8) {
|
|
18315
|
+
return statement.type === "rename_table" && dialect8 === "sqlite";
|
|
17990
18316
|
}
|
|
17991
18317
|
convert(statement) {
|
|
17992
18318
|
const { tableNameFrom, tableNameTo } = statement;
|
|
@@ -17994,8 +18320,8 @@ var SqliteRenameTableConvertor = class extends Convertor {
|
|
|
17994
18320
|
}
|
|
17995
18321
|
};
|
|
17996
18322
|
var MySqlRenameTableConvertor = class extends Convertor {
|
|
17997
|
-
can(statement,
|
|
17998
|
-
return statement.type === "rename_table" &&
|
|
18323
|
+
can(statement, dialect8) {
|
|
18324
|
+
return statement.type === "rename_table" && dialect8 === "mysql";
|
|
17999
18325
|
}
|
|
18000
18326
|
convert(statement) {
|
|
18001
18327
|
const { tableNameFrom, tableNameTo } = statement;
|
|
@@ -18003,8 +18329,8 @@ var MySqlRenameTableConvertor = class extends Convertor {
|
|
|
18003
18329
|
}
|
|
18004
18330
|
};
|
|
18005
18331
|
var PgAlterTableRenameColumnConvertor = class extends Convertor {
|
|
18006
|
-
can(statement,
|
|
18007
|
-
return statement.type === "alter_table_rename_column" &&
|
|
18332
|
+
can(statement, dialect8) {
|
|
18333
|
+
return statement.type === "alter_table_rename_column" && dialect8 === "pg";
|
|
18008
18334
|
}
|
|
18009
18335
|
convert(statement) {
|
|
18010
18336
|
const { tableName, oldColumnName, newColumnName } = statement;
|
|
@@ -18012,8 +18338,8 @@ var PgAlterTableRenameColumnConvertor = class extends Convertor {
|
|
|
18012
18338
|
}
|
|
18013
18339
|
};
|
|
18014
18340
|
var MySqlAlterTableRenameColumnConvertor = class extends Convertor {
|
|
18015
|
-
can(statement,
|
|
18016
|
-
return statement.type === "alter_table_rename_column" &&
|
|
18341
|
+
can(statement, dialect8) {
|
|
18342
|
+
return statement.type === "alter_table_rename_column" && dialect8 === "mysql";
|
|
18017
18343
|
}
|
|
18018
18344
|
convert(statement) {
|
|
18019
18345
|
const { tableName, oldColumnName, newColumnName } = statement;
|
|
@@ -18021,8 +18347,8 @@ var MySqlAlterTableRenameColumnConvertor = class extends Convertor {
|
|
|
18021
18347
|
}
|
|
18022
18348
|
};
|
|
18023
18349
|
var SQLiteAlterTableRenameColumnConvertor = class extends Convertor {
|
|
18024
|
-
can(statement,
|
|
18025
|
-
return statement.type === "alter_table_rename_column" &&
|
|
18350
|
+
can(statement, dialect8) {
|
|
18351
|
+
return statement.type === "alter_table_rename_column" && dialect8 === "sqlite";
|
|
18026
18352
|
}
|
|
18027
18353
|
convert(statement) {
|
|
18028
18354
|
const { tableName, oldColumnName, newColumnName } = statement;
|
|
@@ -18030,8 +18356,8 @@ var SQLiteAlterTableRenameColumnConvertor = class extends Convertor {
|
|
|
18030
18356
|
}
|
|
18031
18357
|
};
|
|
18032
18358
|
var PgAlterTableDropColumnConvertor = class extends Convertor {
|
|
18033
|
-
can(statement,
|
|
18034
|
-
return statement.type === "alter_table_drop_column" &&
|
|
18359
|
+
can(statement, dialect8) {
|
|
18360
|
+
return statement.type === "alter_table_drop_column" && dialect8 === "pg";
|
|
18035
18361
|
}
|
|
18036
18362
|
convert(statement) {
|
|
18037
18363
|
const { tableName, columnName } = statement;
|
|
@@ -18039,8 +18365,8 @@ var PgAlterTableDropColumnConvertor = class extends Convertor {
|
|
|
18039
18365
|
}
|
|
18040
18366
|
};
|
|
18041
18367
|
var MySqlAlterTableDropColumnConvertor = class extends Convertor {
|
|
18042
|
-
can(statement,
|
|
18043
|
-
return statement.type === "alter_table_drop_column" &&
|
|
18368
|
+
can(statement, dialect8) {
|
|
18369
|
+
return statement.type === "alter_table_drop_column" && dialect8 === "mysql";
|
|
18044
18370
|
}
|
|
18045
18371
|
convert(statement) {
|
|
18046
18372
|
const { tableName, columnName } = statement;
|
|
@@ -18048,8 +18374,8 @@ var MySqlAlterTableDropColumnConvertor = class extends Convertor {
|
|
|
18048
18374
|
}
|
|
18049
18375
|
};
|
|
18050
18376
|
var SQLiteAlterTableDropColumnConvertor = class extends Convertor {
|
|
18051
|
-
can(statement,
|
|
18052
|
-
return statement.type === "alter_table_drop_column" &&
|
|
18377
|
+
can(statement, dialect8) {
|
|
18378
|
+
return statement.type === "alter_table_drop_column" && dialect8 === "sqlite";
|
|
18053
18379
|
}
|
|
18054
18380
|
convert(statement) {
|
|
18055
18381
|
const { tableName, columnName } = statement;
|
|
@@ -18057,25 +18383,26 @@ var SQLiteAlterTableDropColumnConvertor = class extends Convertor {
|
|
|
18057
18383
|
}
|
|
18058
18384
|
};
|
|
18059
18385
|
var PgAlterTableAddColumnConvertor = class extends Convertor {
|
|
18060
|
-
can(statement,
|
|
18061
|
-
return statement.type === "alter_table_add_column" &&
|
|
18386
|
+
can(statement, dialect8) {
|
|
18387
|
+
return statement.type === "alter_table_add_column" && dialect8 === "pg";
|
|
18062
18388
|
}
|
|
18063
18389
|
convert(statement) {
|
|
18064
|
-
const { tableName, column:
|
|
18065
|
-
const { name, type, notNull } =
|
|
18066
|
-
const defaultStatement = `${
|
|
18390
|
+
const { tableName, column: column5 } = statement;
|
|
18391
|
+
const { name, type, notNull } = column5;
|
|
18392
|
+
const defaultStatement = `${column5.default !== void 0 ? `DEFAULT ${column5.default}` : ""}`;
|
|
18393
|
+
const fixedType = pgNativeTypes.has(column5.type) ? column5.type : `"${column5.type}"`;
|
|
18067
18394
|
const notNullStatement = `${notNull ? "NOT NULL" : ""}`;
|
|
18068
|
-
return `ALTER TABLE ${tableName} ADD COLUMN "${name}" ${
|
|
18395
|
+
return `ALTER TABLE ${tableName} ADD COLUMN "${name}" ${fixedType} ${defaultStatement} ${notNullStatement}`.replace(/ +/g, " ").trim() + ";";
|
|
18069
18396
|
}
|
|
18070
18397
|
};
|
|
18071
18398
|
var MySqlAlterTableAddColumnConvertor = class extends Convertor {
|
|
18072
|
-
can(statement,
|
|
18073
|
-
return statement.type === "alter_table_add_column" &&
|
|
18399
|
+
can(statement, dialect8) {
|
|
18400
|
+
return statement.type === "alter_table_add_column" && dialect8 === "mysql";
|
|
18074
18401
|
}
|
|
18075
18402
|
convert(statement) {
|
|
18076
|
-
const { tableName, column:
|
|
18077
|
-
const { name, type, notNull, primaryKey, autoincrement } =
|
|
18078
|
-
const defaultStatement = `${
|
|
18403
|
+
const { tableName, column: column5 } = statement;
|
|
18404
|
+
const { name, type, notNull, primaryKey, autoincrement } = column5;
|
|
18405
|
+
const defaultStatement = `${column5.default !== void 0 ? `DEFAULT ${column5.default}` : ""}`;
|
|
18079
18406
|
const notNullStatement = `${notNull ? "NOT NULL" : ""}`;
|
|
18080
18407
|
const primaryKeyStatement = `${primaryKey ? "PRIMARY KEY" : ""}`;
|
|
18081
18408
|
const autoincrementStatement = `${autoincrement ? "AUTO_INCREMENT" : ""}`;
|
|
@@ -18083,13 +18410,13 @@ var MySqlAlterTableAddColumnConvertor = class extends Convertor {
|
|
|
18083
18410
|
}
|
|
18084
18411
|
};
|
|
18085
18412
|
var SQLiteAlterTableAddColumnConvertor = class extends Convertor {
|
|
18086
|
-
can(statement,
|
|
18087
|
-
return statement.type === "sqlite_alter_table_add_column" &&
|
|
18413
|
+
can(statement, dialect8) {
|
|
18414
|
+
return statement.type === "sqlite_alter_table_add_column" && dialect8 === "sqlite";
|
|
18088
18415
|
}
|
|
18089
18416
|
convert(statement) {
|
|
18090
|
-
const { tableName, column:
|
|
18091
|
-
const { name, type, notNull, primaryKey } =
|
|
18092
|
-
const defaultStatement = `${
|
|
18417
|
+
const { tableName, column: column5, referenceData } = statement;
|
|
18418
|
+
const { name, type, notNull, primaryKey } = column5;
|
|
18419
|
+
const defaultStatement = `${column5.default !== void 0 ? `DEFAULT ${column5.default}` : ""}`;
|
|
18093
18420
|
const notNullStatement = `${notNull ? "NOT NULL" : ""}`;
|
|
18094
18421
|
const primaryKeyStatement = `${primaryKey ? "PRIMARY KEY" : ""}`;
|
|
18095
18422
|
const referenceAsObject = referenceData ? SQLiteSquasher.unsquashFK(referenceData) : void 0;
|
|
@@ -18098,8 +18425,8 @@ var SQLiteAlterTableAddColumnConvertor = class extends Convertor {
|
|
|
18098
18425
|
}
|
|
18099
18426
|
};
|
|
18100
18427
|
var PgAlterTableAlterColumnSetTypeConvertor = class extends Convertor {
|
|
18101
|
-
can(statement,
|
|
18102
|
-
return statement.type === "alter_table_alter_column_set_type" &&
|
|
18428
|
+
can(statement, dialect8) {
|
|
18429
|
+
return statement.type === "alter_table_alter_column_set_type" && dialect8 === "pg";
|
|
18103
18430
|
}
|
|
18104
18431
|
convert(statement) {
|
|
18105
18432
|
const { tableName, columnName, newDataType } = statement;
|
|
@@ -18107,8 +18434,8 @@ var PgAlterTableAlterColumnSetTypeConvertor = class extends Convertor {
|
|
|
18107
18434
|
}
|
|
18108
18435
|
};
|
|
18109
18436
|
var SQLiteAlterTableAlterColumnSetTypeConvertor = class extends Convertor {
|
|
18110
|
-
can(statement,
|
|
18111
|
-
return statement.type === "alter_table_alter_column_set_type" &&
|
|
18437
|
+
can(statement, dialect8) {
|
|
18438
|
+
return statement.type === "alter_table_alter_column_set_type" && dialect8 === "sqlite";
|
|
18112
18439
|
}
|
|
18113
18440
|
convert(statement) {
|
|
18114
18441
|
return `/*
|
|
@@ -18122,8 +18449,8 @@ var SQLiteAlterTableAlterColumnSetTypeConvertor = class extends Convertor {
|
|
|
18122
18449
|
}
|
|
18123
18450
|
};
|
|
18124
18451
|
var PgAlterTableAlterColumnSetDefaultConvertor = class extends Convertor {
|
|
18125
|
-
can(statement,
|
|
18126
|
-
return statement.type === "alter_table_alter_column_set_default" &&
|
|
18452
|
+
can(statement, dialect8) {
|
|
18453
|
+
return statement.type === "alter_table_alter_column_set_default" && dialect8 === "pg";
|
|
18127
18454
|
}
|
|
18128
18455
|
convert(statement) {
|
|
18129
18456
|
const { tableName, columnName } = statement;
|
|
@@ -18131,8 +18458,8 @@ var PgAlterTableAlterColumnSetDefaultConvertor = class extends Convertor {
|
|
|
18131
18458
|
}
|
|
18132
18459
|
};
|
|
18133
18460
|
var SqliteAlterTableAlterColumnSetDefaultConvertor = class extends Convertor {
|
|
18134
|
-
can(statement,
|
|
18135
|
-
return statement.type === "alter_table_alter_column_set_default" &&
|
|
18461
|
+
can(statement, dialect8) {
|
|
18462
|
+
return statement.type === "alter_table_alter_column_set_default" && dialect8 === "sqlite";
|
|
18136
18463
|
}
|
|
18137
18464
|
convert(statement) {
|
|
18138
18465
|
return `/*
|
|
@@ -18146,8 +18473,8 @@ var SqliteAlterTableAlterColumnSetDefaultConvertor = class extends Convertor {
|
|
|
18146
18473
|
}
|
|
18147
18474
|
};
|
|
18148
18475
|
var PgAlterTableAlterColumnDropDefaultConvertor = class extends Convertor {
|
|
18149
|
-
can(statement,
|
|
18150
|
-
return statement.type === "alter_table_alter_column_drop_default" &&
|
|
18476
|
+
can(statement, dialect8) {
|
|
18477
|
+
return statement.type === "alter_table_alter_column_drop_default" && dialect8 === "pg";
|
|
18151
18478
|
}
|
|
18152
18479
|
convert(statement) {
|
|
18153
18480
|
const { tableName, columnName } = statement;
|
|
@@ -18155,8 +18482,8 @@ var PgAlterTableAlterColumnDropDefaultConvertor = class extends Convertor {
|
|
|
18155
18482
|
}
|
|
18156
18483
|
};
|
|
18157
18484
|
var SqliteAlterTableAlterColumnDropDefaultConvertor = class extends Convertor {
|
|
18158
|
-
can(statement,
|
|
18159
|
-
return statement.type === "alter_table_alter_column_drop_default" &&
|
|
18485
|
+
can(statement, dialect8) {
|
|
18486
|
+
return statement.type === "alter_table_alter_column_drop_default" && dialect8 === "sqlite";
|
|
18160
18487
|
}
|
|
18161
18488
|
convert(statement) {
|
|
18162
18489
|
return `/*
|
|
@@ -18170,8 +18497,8 @@ var SqliteAlterTableAlterColumnDropDefaultConvertor = class extends Convertor {
|
|
|
18170
18497
|
}
|
|
18171
18498
|
};
|
|
18172
18499
|
var PgAlterTableAlterColumnSetNotNullConvertor = class extends Convertor {
|
|
18173
|
-
can(statement,
|
|
18174
|
-
return statement.type === "alter_table_alter_column_set_notnull" &&
|
|
18500
|
+
can(statement, dialect8) {
|
|
18501
|
+
return statement.type === "alter_table_alter_column_set_notnull" && dialect8 === "pg";
|
|
18175
18502
|
}
|
|
18176
18503
|
convert(statement) {
|
|
18177
18504
|
const { tableName, columnName } = statement;
|
|
@@ -18179,8 +18506,8 @@ var PgAlterTableAlterColumnSetNotNullConvertor = class extends Convertor {
|
|
|
18179
18506
|
}
|
|
18180
18507
|
};
|
|
18181
18508
|
var SqliteAlterTableAlterColumnSetNotNullConvertor = class extends Convertor {
|
|
18182
|
-
can(statement,
|
|
18183
|
-
return statement.type === "alter_table_alter_column_set_notnull" &&
|
|
18509
|
+
can(statement, dialect8) {
|
|
18510
|
+
return statement.type === "alter_table_alter_column_set_notnull" && dialect8 === "sqlite";
|
|
18184
18511
|
}
|
|
18185
18512
|
convert(statement) {
|
|
18186
18513
|
return `/*
|
|
@@ -18194,8 +18521,8 @@ var SqliteAlterTableAlterColumnSetNotNullConvertor = class extends Convertor {
|
|
|
18194
18521
|
}
|
|
18195
18522
|
};
|
|
18196
18523
|
var PgAlterTableAlterColumnDropNotNullConvertor = class extends Convertor {
|
|
18197
|
-
can(statement,
|
|
18198
|
-
return statement.type === "alter_table_alter_column_drop_notnull" &&
|
|
18524
|
+
can(statement, dialect8) {
|
|
18525
|
+
return statement.type === "alter_table_alter_column_drop_notnull" && dialect8 === "pg";
|
|
18199
18526
|
}
|
|
18200
18527
|
convert(statement) {
|
|
18201
18528
|
const { tableName, columnName } = statement;
|
|
@@ -18203,8 +18530,8 @@ var PgAlterTableAlterColumnDropNotNullConvertor = class extends Convertor {
|
|
|
18203
18530
|
}
|
|
18204
18531
|
};
|
|
18205
18532
|
var SqliteAlterTableAlterColumnDropNotNullConvertor = class extends Convertor {
|
|
18206
|
-
can(statement,
|
|
18207
|
-
return statement.type === "alter_table_alter_column_drop_notnull" &&
|
|
18533
|
+
can(statement, dialect8) {
|
|
18534
|
+
return statement.type === "alter_table_alter_column_drop_notnull" && dialect8 === "sqlite";
|
|
18208
18535
|
}
|
|
18209
18536
|
convert(statement) {
|
|
18210
18537
|
return `/*
|
|
@@ -18218,8 +18545,8 @@ var SqliteAlterTableAlterColumnDropNotNullConvertor = class extends Convertor {
|
|
|
18218
18545
|
}
|
|
18219
18546
|
};
|
|
18220
18547
|
var PgCreateForeignKeyConvertor = class extends Convertor {
|
|
18221
|
-
can(statement,
|
|
18222
|
-
return statement.type === "create_reference" &&
|
|
18548
|
+
can(statement, dialect8) {
|
|
18549
|
+
return statement.type === "create_reference" && dialect8 === "pg";
|
|
18223
18550
|
}
|
|
18224
18551
|
convert(statement) {
|
|
18225
18552
|
const {
|
|
@@ -18236,17 +18563,17 @@ var PgCreateForeignKeyConvertor = class extends Convertor {
|
|
|
18236
18563
|
const fromColumnsString = columnsFrom.map((it) => `"${it}"`).join(",");
|
|
18237
18564
|
const toColumnsString = columnsTo.map((it) => `"${it}"`).join(",");
|
|
18238
18565
|
const alterStatement = `ALTER TABLE ${tableFrom} ADD CONSTRAINT ${name} FOREIGN KEY (${fromColumnsString}) REFERENCES ${tableTo}(${toColumnsString}) ${onDeleteStatement} ${onUpdateStatement}`.replace(/ +/g, " ").trim();
|
|
18239
|
-
let
|
|
18240
|
-
|
|
18241
|
-
|
|
18242
|
-
|
|
18243
|
-
|
|
18244
|
-
return
|
|
18566
|
+
let sql2 = "DO $$ BEGIN\n";
|
|
18567
|
+
sql2 += " " + alterStatement + ";\n";
|
|
18568
|
+
sql2 += "EXCEPTION\n";
|
|
18569
|
+
sql2 += " WHEN duplicate_object THEN null;\n";
|
|
18570
|
+
sql2 += "END $$;\n";
|
|
18571
|
+
return sql2;
|
|
18245
18572
|
}
|
|
18246
18573
|
};
|
|
18247
18574
|
var SqliteCreateForeignKeyConvertor = class extends Convertor {
|
|
18248
|
-
can(statement,
|
|
18249
|
-
return statement.type === "create_reference" &&
|
|
18575
|
+
can(statement, dialect8) {
|
|
18576
|
+
return statement.type === "create_reference" && dialect8 === "sqlite";
|
|
18250
18577
|
}
|
|
18251
18578
|
convert(statement) {
|
|
18252
18579
|
return `/*
|
|
@@ -18259,8 +18586,8 @@ var SqliteCreateForeignKeyConvertor = class extends Convertor {
|
|
|
18259
18586
|
}
|
|
18260
18587
|
};
|
|
18261
18588
|
var MySqlCreateForeignKeyConvertor = class extends Convertor {
|
|
18262
|
-
can(statement,
|
|
18263
|
-
return statement.type === "create_reference" &&
|
|
18589
|
+
can(statement, dialect8) {
|
|
18590
|
+
return statement.type === "create_reference" && dialect8 === "mysql";
|
|
18264
18591
|
}
|
|
18265
18592
|
convert(statement) {
|
|
18266
18593
|
const {
|
|
@@ -18288,8 +18615,8 @@ var AlterForeignKeyConvertor = class extends Convertor {
|
|
|
18288
18615
|
}
|
|
18289
18616
|
};
|
|
18290
18617
|
var SqliteAlterForeignKeyConvertor = class extends Convertor {
|
|
18291
|
-
can(statement,
|
|
18292
|
-
return statement.type === "alter_reference" &&
|
|
18618
|
+
can(statement, dialect8) {
|
|
18619
|
+
return statement.type === "alter_reference" && dialect8 === "sqlite";
|
|
18293
18620
|
}
|
|
18294
18621
|
convert(statement) {
|
|
18295
18622
|
return `/*
|
|
@@ -18302,8 +18629,8 @@ var SqliteAlterForeignKeyConvertor = class extends Convertor {
|
|
|
18302
18629
|
}
|
|
18303
18630
|
};
|
|
18304
18631
|
var PgDeleteForeignKeyConvertor = class extends Convertor {
|
|
18305
|
-
can(statement,
|
|
18306
|
-
return statement.type === "delete_reference" &&
|
|
18632
|
+
can(statement, dialect8) {
|
|
18633
|
+
return statement.type === "delete_reference" && dialect8 === "pg";
|
|
18307
18634
|
}
|
|
18308
18635
|
convert(statement) {
|
|
18309
18636
|
const tableFrom = statement.tableName;
|
|
@@ -18313,8 +18640,8 @@ var PgDeleteForeignKeyConvertor = class extends Convertor {
|
|
|
18313
18640
|
}
|
|
18314
18641
|
};
|
|
18315
18642
|
var SqliteDeleteForeignKeyConvertor = class extends Convertor {
|
|
18316
|
-
can(statement,
|
|
18317
|
-
return statement.type === "delete_reference" &&
|
|
18643
|
+
can(statement, dialect8) {
|
|
18644
|
+
return statement.type === "delete_reference" && dialect8 === "sqlite";
|
|
18318
18645
|
}
|
|
18319
18646
|
convert(statement) {
|
|
18320
18647
|
return `/*
|
|
@@ -18327,8 +18654,8 @@ var SqliteDeleteForeignKeyConvertor = class extends Convertor {
|
|
|
18327
18654
|
}
|
|
18328
18655
|
};
|
|
18329
18656
|
var MySqlDeleteForeignKeyConvertor = class extends Convertor {
|
|
18330
|
-
can(statement,
|
|
18331
|
-
return statement.type === "delete_reference" &&
|
|
18657
|
+
can(statement, dialect8) {
|
|
18658
|
+
return statement.type === "delete_reference" && dialect8 === "mysql";
|
|
18332
18659
|
}
|
|
18333
18660
|
convert(statement) {
|
|
18334
18661
|
const tableFrom = statement.tableName;
|
|
@@ -18338,8 +18665,8 @@ var MySqlDeleteForeignKeyConvertor = class extends Convertor {
|
|
|
18338
18665
|
}
|
|
18339
18666
|
};
|
|
18340
18667
|
var CreatePgIndexConvertor = class extends Convertor {
|
|
18341
|
-
can(statement,
|
|
18342
|
-
return statement.type === "create_index" &&
|
|
18668
|
+
can(statement, dialect8) {
|
|
18669
|
+
return statement.type === "create_index" && dialect8 === "pg";
|
|
18343
18670
|
}
|
|
18344
18671
|
convert(statement) {
|
|
18345
18672
|
const { name, columns, isUnique } = PgSquasher.unsquashIdx(statement.data);
|
|
@@ -18349,8 +18676,8 @@ var CreatePgIndexConvertor = class extends Convertor {
|
|
|
18349
18676
|
}
|
|
18350
18677
|
};
|
|
18351
18678
|
var CreateMySqlIndexConvertor = class extends Convertor {
|
|
18352
|
-
can(statement,
|
|
18353
|
-
return statement.type === "create_index" &&
|
|
18679
|
+
can(statement, dialect8) {
|
|
18680
|
+
return statement.type === "create_index" && dialect8 === "mysql";
|
|
18354
18681
|
}
|
|
18355
18682
|
convert(statement) {
|
|
18356
18683
|
const { name, columns, isUnique } = PgSquasher.unsquashIdx(statement.data);
|
|
@@ -18360,8 +18687,8 @@ var CreateMySqlIndexConvertor = class extends Convertor {
|
|
|
18360
18687
|
}
|
|
18361
18688
|
};
|
|
18362
18689
|
var CreateSqliteIndexConvertor = class extends Convertor {
|
|
18363
|
-
can(statement,
|
|
18364
|
-
return statement.type === "create_index" &&
|
|
18690
|
+
can(statement, dialect8) {
|
|
18691
|
+
return statement.type === "create_index" && dialect8 === "sqlite";
|
|
18365
18692
|
}
|
|
18366
18693
|
convert(statement) {
|
|
18367
18694
|
const { name, columns, isUnique, where } = SQLiteSquasher.unsquashIdx(
|
|
@@ -18374,8 +18701,8 @@ var CreateSqliteIndexConvertor = class extends Convertor {
|
|
|
18374
18701
|
}
|
|
18375
18702
|
};
|
|
18376
18703
|
var PgDropIndexConvertor = class extends Convertor {
|
|
18377
|
-
can(statement,
|
|
18378
|
-
return statement.type === "drop_index" &&
|
|
18704
|
+
can(statement, dialect8) {
|
|
18705
|
+
return statement.type === "drop_index" && dialect8 === "pg";
|
|
18379
18706
|
}
|
|
18380
18707
|
convert(statement) {
|
|
18381
18708
|
const { name } = PgSquasher.unsquashIdx(statement.data);
|
|
@@ -18383,8 +18710,8 @@ var PgDropIndexConvertor = class extends Convertor {
|
|
|
18383
18710
|
}
|
|
18384
18711
|
};
|
|
18385
18712
|
var SqliteDropIndexConvertor = class extends Convertor {
|
|
18386
|
-
can(statement,
|
|
18387
|
-
return statement.type === "drop_index" &&
|
|
18713
|
+
can(statement, dialect8) {
|
|
18714
|
+
return statement.type === "drop_index" && dialect8 === "sqlite";
|
|
18388
18715
|
}
|
|
18389
18716
|
convert(statement) {
|
|
18390
18717
|
const { name } = PgSquasher.unsquashIdx(statement.data);
|
|
@@ -18433,10 +18760,10 @@ convertors.push(new SqliteAlterTableAlterColumnSetNotNullConvertor());
|
|
|
18433
18760
|
convertors.push(new SqliteAlterTableAlterColumnDropNotNullConvertor());
|
|
18434
18761
|
convertors.push(new SqliteAlterTableAlterColumnSetDefaultConvertor());
|
|
18435
18762
|
convertors.push(new SqliteAlterTableAlterColumnDropDefaultConvertor());
|
|
18436
|
-
var fromJson = (statements,
|
|
18763
|
+
var fromJson = (statements, dialect8) => {
|
|
18437
18764
|
const result = statements.map((statement) => {
|
|
18438
18765
|
const filtered = convertors.filter((it) => {
|
|
18439
|
-
return it.can(statement,
|
|
18766
|
+
return it.can(statement, dialect8);
|
|
18440
18767
|
});
|
|
18441
18768
|
const convertor = filtered.length === 1 ? filtered[0] : void 0;
|
|
18442
18769
|
if (!convertor) {
|
|
@@ -18576,8 +18903,8 @@ var findAlternationsInTable = (table4, oldName, newName) => {
|
|
|
18576
18903
|
deletedForeignKeys
|
|
18577
18904
|
};
|
|
18578
18905
|
};
|
|
18579
|
-
var alternationsInColumn = (
|
|
18580
|
-
const altered = [
|
|
18906
|
+
var alternationsInColumn = (column5) => {
|
|
18907
|
+
const altered = [column5];
|
|
18581
18908
|
const result = altered.map((it) => {
|
|
18582
18909
|
if (typeof it.name !== "string" && "__old" in it.name) {
|
|
18583
18910
|
return { ...it, name: { type: "changed", old: it.name.__old, new: it.name.__new } };
|
|
@@ -18676,11 +19003,11 @@ var prepareRenameColumns = (tableName, pairs) => {
|
|
|
18676
19003
|
};
|
|
18677
19004
|
});
|
|
18678
19005
|
};
|
|
18679
|
-
var prepareAlterTableColumnsJson = (tableName, deleted, added, altered, addedFk,
|
|
19006
|
+
var prepareAlterTableColumnsJson = (tableName, deleted, added, altered, addedFk, dialect8) => {
|
|
18680
19007
|
const statements = [];
|
|
18681
19008
|
const dropColumns = _prepareDropColumns(tableName, deleted);
|
|
18682
19009
|
const alterColumns = _prepareAlterColumns(tableName, altered);
|
|
18683
|
-
if (
|
|
19010
|
+
if (dialect8 === "sqlite") {
|
|
18684
19011
|
let jsonCreateFKStatements = Object.values(addedFk);
|
|
18685
19012
|
const sqliteAddColumns = _prepareSQLiteAddColumns(
|
|
18686
19013
|
tableName,
|
|
@@ -18733,63 +19060,63 @@ var _prepareSQLiteAddColumns = (tableName, columns, referenceData) => {
|
|
|
18733
19060
|
var _prepareAlterColumns = (tableName, columns) => {
|
|
18734
19061
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
18735
19062
|
let statements = [];
|
|
18736
|
-
for (const
|
|
18737
|
-
const columnName = typeof
|
|
18738
|
-
if (typeof
|
|
19063
|
+
for (const column5 of columns) {
|
|
19064
|
+
const columnName = typeof column5.name !== "string" ? column5.name.new : column5.name;
|
|
19065
|
+
if (typeof column5.name !== "string") {
|
|
18739
19066
|
statements.push({
|
|
18740
19067
|
type: "alter_table_rename_column",
|
|
18741
19068
|
tableName,
|
|
18742
|
-
oldColumnName:
|
|
18743
|
-
newColumnName:
|
|
19069
|
+
oldColumnName: column5.name.old,
|
|
19070
|
+
newColumnName: column5.name.new
|
|
18744
19071
|
});
|
|
18745
19072
|
}
|
|
18746
|
-
if (((_a =
|
|
19073
|
+
if (((_a = column5.type) == null ? void 0 : _a.type) === "changed") {
|
|
18747
19074
|
statements.push({
|
|
18748
19075
|
type: "alter_table_alter_column_set_type",
|
|
18749
19076
|
tableName,
|
|
18750
19077
|
columnName,
|
|
18751
|
-
newDataType:
|
|
19078
|
+
newDataType: column5.type.new
|
|
18752
19079
|
});
|
|
18753
19080
|
}
|
|
18754
|
-
if (((_b =
|
|
19081
|
+
if (((_b = column5.default) == null ? void 0 : _b.type) === "added") {
|
|
18755
19082
|
statements.push({
|
|
18756
19083
|
type: "alter_table_alter_column_set_default",
|
|
18757
19084
|
tableName,
|
|
18758
19085
|
columnName,
|
|
18759
|
-
newDefaultValue:
|
|
19086
|
+
newDefaultValue: column5.default.value
|
|
18760
19087
|
});
|
|
18761
19088
|
}
|
|
18762
|
-
if (((_c =
|
|
19089
|
+
if (((_c = column5.default) == null ? void 0 : _c.type) === "changed") {
|
|
18763
19090
|
statements.push({
|
|
18764
19091
|
type: "alter_table_alter_column_set_default",
|
|
18765
19092
|
tableName,
|
|
18766
19093
|
columnName,
|
|
18767
|
-
newDefaultValue:
|
|
19094
|
+
newDefaultValue: column5.default.new
|
|
18768
19095
|
});
|
|
18769
19096
|
}
|
|
18770
|
-
if (((_d =
|
|
19097
|
+
if (((_d = column5.default) == null ? void 0 : _d.type) === "deleted") {
|
|
18771
19098
|
statements.push({
|
|
18772
19099
|
type: "alter_table_alter_column_drop_default",
|
|
18773
19100
|
tableName,
|
|
18774
19101
|
columnName
|
|
18775
19102
|
});
|
|
18776
19103
|
}
|
|
18777
|
-
if (((_e =
|
|
19104
|
+
if (((_e = column5.notNull) == null ? void 0 : _e.type) === "added") {
|
|
18778
19105
|
statements.push({
|
|
18779
19106
|
type: "alter_table_alter_column_set_notnull",
|
|
18780
19107
|
tableName,
|
|
18781
19108
|
columnName
|
|
18782
19109
|
});
|
|
18783
19110
|
}
|
|
18784
|
-
if (((_f =
|
|
18785
|
-
const type =
|
|
19111
|
+
if (((_f = column5.notNull) == null ? void 0 : _f.type) === "changed") {
|
|
19112
|
+
const type = column5.notNull.new ? "alter_table_alter_column_set_notnull" : "alter_table_alter_column_drop_notnull";
|
|
18786
19113
|
statements.push({
|
|
18787
19114
|
type,
|
|
18788
19115
|
tableName,
|
|
18789
19116
|
columnName
|
|
18790
19117
|
});
|
|
18791
19118
|
}
|
|
18792
|
-
if (((_g =
|
|
19119
|
+
if (((_g = column5.notNull) == null ? void 0 : _g.type) === "deleted") {
|
|
18793
19120
|
statements.push({
|
|
18794
19121
|
type: "alter_table_alter_column_drop_notnull",
|
|
18795
19122
|
tableName,
|
|
@@ -18869,13 +19196,13 @@ var mapValues = (obj, map) => {
|
|
|
18869
19196
|
}, {});
|
|
18870
19197
|
return result;
|
|
18871
19198
|
};
|
|
18872
|
-
var squashIndexesAndFKs = (json,
|
|
19199
|
+
var squashIndexesAndFKs = (json, dialect8 = "pg") => {
|
|
18873
19200
|
const mappedTables = Object.fromEntries(
|
|
18874
19201
|
Object.entries(json.tables).map((it) => {
|
|
18875
19202
|
const squashedIndexes = mapValues(it[1].indexes, (index4) => {
|
|
18876
|
-
if (
|
|
19203
|
+
if (dialect8 === "mysql") {
|
|
18877
19204
|
return MySqlSquasher.squashIdx(index4);
|
|
18878
|
-
} else if (
|
|
19205
|
+
} else if (dialect8 === "pg") {
|
|
18879
19206
|
return PgSquasher.squashIdx(index4);
|
|
18880
19207
|
} else {
|
|
18881
19208
|
return SQLiteSquasher.squashIdx(index4);
|
|
@@ -18883,9 +19210,9 @@ var squashIndexesAndFKs = (json, dialect7 = "pg") => {
|
|
|
18883
19210
|
});
|
|
18884
19211
|
const squashedFKs = mapValues(it[1].foreignKeys, (fk4) => {
|
|
18885
19212
|
{
|
|
18886
|
-
if (
|
|
19213
|
+
if (dialect8 === "mysql") {
|
|
18887
19214
|
return MySqlSquasher.squashFK(fk4);
|
|
18888
|
-
} else if (
|
|
19215
|
+
} else if (dialect8 === "pg") {
|
|
18889
19216
|
return PgSquasher.squashFK(fk4);
|
|
18890
19217
|
} else {
|
|
18891
19218
|
return SQLiteSquasher.squashFK(fk4);
|
|
@@ -18992,11 +19319,11 @@ var diffResultScheme = objectType({
|
|
|
18992
19319
|
deletedEnums: enumSchema2.array(),
|
|
18993
19320
|
alteredEnums: changedEnumSchema.array()
|
|
18994
19321
|
}).strict();
|
|
18995
|
-
var applySnapshotsDiff = async (json1, json2, tablesResolver, columnsResolver,
|
|
19322
|
+
var applySnapshotsDiff = async (json1, json2, tablesResolver, columnsResolver, dialect8) => {
|
|
18996
19323
|
var _a, _b, _c, _d;
|
|
18997
19324
|
const diffResult = applyJsonDiff(
|
|
18998
|
-
squashIndexesAndFKs(json1,
|
|
18999
|
-
squashIndexesAndFKs(json2,
|
|
19325
|
+
squashIndexesAndFKs(json1, dialect8),
|
|
19326
|
+
squashIndexesAndFKs(json2, dialect8)
|
|
19000
19327
|
);
|
|
19001
19328
|
if (Object.keys(diffResult).length === 0) {
|
|
19002
19329
|
return "";
|
|
@@ -19062,7 +19389,7 @@ var applySnapshotsDiff = async (json1, json2, tablesResolver, columnsResolver, d
|
|
|
19062
19389
|
it.added,
|
|
19063
19390
|
it.altered,
|
|
19064
19391
|
it.addedForeignKeys,
|
|
19065
|
-
|
|
19392
|
+
dialect8
|
|
19066
19393
|
);
|
|
19067
19394
|
}).flat();
|
|
19068
19395
|
const jsonCreateIndexesForAllAlteredTables = allAltered.map((it) => {
|
|
@@ -19075,7 +19402,7 @@ var applySnapshotsDiff = async (json1, json2, tablesResolver, columnsResolver, d
|
|
|
19075
19402
|
return prepareCreateReferencesJson(it.name, it.foreignKeys);
|
|
19076
19403
|
}).flat();
|
|
19077
19404
|
const jsonReferencesForAllAlteredTables = allAltered.map((it) => {
|
|
19078
|
-
const forAdded =
|
|
19405
|
+
const forAdded = dialect8 !== "sqlite" ? prepareCreateReferencesJson(it.name, it.addedForeignKeys) : [];
|
|
19079
19406
|
const forAltered = prepareDropReferencesJson(
|
|
19080
19407
|
it.name,
|
|
19081
19408
|
it.deletedForeignKeys
|
|
@@ -19092,7 +19419,7 @@ var applySnapshotsDiff = async (json1, json2, tablesResolver, columnsResolver, d
|
|
|
19092
19419
|
}).flat()) != null ? _d : [];
|
|
19093
19420
|
jsonStatements.push(...createEnums);
|
|
19094
19421
|
jsonStatements.push(...jsonAlterEnumsWithAddedValues);
|
|
19095
|
-
if (
|
|
19422
|
+
if (dialect8 === "sqlite") {
|
|
19096
19423
|
jsonStatements.push(...jsonSQLiteCreateTables);
|
|
19097
19424
|
} else {
|
|
19098
19425
|
jsonStatements.push(...jsonCreateTables);
|
|
@@ -19101,7 +19428,7 @@ var applySnapshotsDiff = async (json1, json2, tablesResolver, columnsResolver, d
|
|
|
19101
19428
|
jsonStatements.push(...jsonRenameTables);
|
|
19102
19429
|
jsonStatements.push(...jsonRenameColumnsStatements);
|
|
19103
19430
|
jsonStatements.push(...jsonAlterTables);
|
|
19104
|
-
if (
|
|
19431
|
+
if (dialect8 !== "sqlite")
|
|
19105
19432
|
jsonStatements.push(...jsonCreateReferences);
|
|
19106
19433
|
jsonStatements.push(...jsonAlterReferencesForAlteredTables);
|
|
19107
19434
|
jsonStatements.push(...jsonCreateIndexesForCreatedTables);
|
|
@@ -19722,6 +20049,34 @@ Is ${source_default.bold.blue(
|
|
|
19722
20049
|
return this.state.items[this.state.selectedIdx];
|
|
19723
20050
|
}
|
|
19724
20051
|
};
|
|
20052
|
+
var frames = function(values) {
|
|
20053
|
+
let index4 = 0;
|
|
20054
|
+
const iterator = () => {
|
|
20055
|
+
const frame = values[index4];
|
|
20056
|
+
index4 += 1;
|
|
20057
|
+
index4 %= values.length;
|
|
20058
|
+
return frame;
|
|
20059
|
+
};
|
|
20060
|
+
return iterator;
|
|
20061
|
+
};
|
|
20062
|
+
var Progress = class extends import_hanji.TaskView {
|
|
20063
|
+
constructor() {
|
|
20064
|
+
super();
|
|
20065
|
+
this.prefix = [];
|
|
20066
|
+
this.prepend = (msg) => {
|
|
20067
|
+
this.prefix.push(msg);
|
|
20068
|
+
};
|
|
20069
|
+
this.spinner = frames("|/-\\".split(""));
|
|
20070
|
+
this.timeout = setInterval(() => {
|
|
20071
|
+
this.requestLayout();
|
|
20072
|
+
}, 128);
|
|
20073
|
+
this.on("detach", () => clearInterval(this.timeout));
|
|
20074
|
+
}
|
|
20075
|
+
render() {
|
|
20076
|
+
return `${this.spinner()} introspecting database
|
|
20077
|
+
`;
|
|
20078
|
+
}
|
|
20079
|
+
};
|
|
19725
20080
|
|
|
19726
20081
|
// src/migrationPreparator.ts
|
|
19727
20082
|
var validateWithReport = (root, migrationFolders) => {
|
|
@@ -19820,8 +20175,8 @@ var prepareMigration = (outFolder = "drizzle", schemaPath, _dialect) => {
|
|
|
19820
20175
|
const serialized = serializer_default(schemaPath, _dialect);
|
|
19821
20176
|
const id = (0, import_crypto.randomUUID)();
|
|
19822
20177
|
const idPrev = prevSnapshot.id;
|
|
19823
|
-
const { version, dialect:
|
|
19824
|
-
const result = { version, dialect:
|
|
20178
|
+
const { version, dialect: dialect8, ...rest } = serialized;
|
|
20179
|
+
const result = { version, dialect: dialect8, id, prevId: idPrev, ...rest };
|
|
19825
20180
|
return { prev: prevSnapshot, cur: result };
|
|
19826
20181
|
};
|
|
19827
20182
|
var migrationPreparator_default = prepareMigration;
|
|
@@ -19832,9 +20187,9 @@ var import_hanji3 = __toESM(require_hanji());
|
|
|
19832
20187
|
var prepareAndMigrate = async (config) => {
|
|
19833
20188
|
const outFolder = config.out;
|
|
19834
20189
|
const schemaPath = config.schema;
|
|
19835
|
-
const
|
|
20190
|
+
const dialect8 = config.dialect;
|
|
19836
20191
|
try {
|
|
19837
|
-
const { prev, cur } = migrationPreparator_default(outFolder, schemaPath,
|
|
20192
|
+
const { prev, cur } = migrationPreparator_default(outFolder, schemaPath, dialect8);
|
|
19838
20193
|
const toSave = JSON.parse(JSON.stringify(cur));
|
|
19839
20194
|
const validatedPrev = commonSchema.parse(prev);
|
|
19840
20195
|
const validatedCur = commonSchema.parse(cur);
|
|
@@ -19844,8 +20199,8 @@ var prepareAndMigrate = async (config) => {
|
|
|
19844
20199
|
freeeeeeze(validatedPrev);
|
|
19845
20200
|
freeeeeeze(validatedCur);
|
|
19846
20201
|
console.log(schema4(cur));
|
|
19847
|
-
const
|
|
19848
|
-
if (
|
|
20202
|
+
const sql2 = await prepareSQL(validatedPrev, validatedCur, dialect8);
|
|
20203
|
+
if (sql2.length === 0) {
|
|
19849
20204
|
console.log("No schema changes, nothing to migrate \u{1F634}");
|
|
19850
20205
|
return;
|
|
19851
20206
|
}
|
|
@@ -19856,7 +20211,7 @@ var prepareAndMigrate = async (config) => {
|
|
|
19856
20211
|
`${migrationFolderPath}/snapshot.json`,
|
|
19857
20212
|
JSON.stringify(toSave, null, 2)
|
|
19858
20213
|
);
|
|
19859
|
-
import_fs3.default.writeFileSync(`${migrationFolderPath}/migration.sql`,
|
|
20214
|
+
import_fs3.default.writeFileSync(`${migrationFolderPath}/migration.sql`, sql2);
|
|
19860
20215
|
console.log(
|
|
19861
20216
|
source_default.bold.green("Done:"),
|
|
19862
20217
|
import_path2.default.join(`${migrationFolderPath}/migration.sql`)
|
|
@@ -19873,7 +20228,7 @@ var freeeeeeze = (obj) => {
|
|
|
19873
20228
|
}
|
|
19874
20229
|
}
|
|
19875
20230
|
};
|
|
19876
|
-
var prepareSQL = async (prev, cur,
|
|
20231
|
+
var prepareSQL = async (prev, cur, dialect8) => {
|
|
19877
20232
|
const tablesResolver = async (input) => {
|
|
19878
20233
|
try {
|
|
19879
20234
|
const { created, deleted, renamed } = await promptTablesConflict(
|
|
@@ -19904,7 +20259,7 @@ var prepareSQL = async (prev, cur, dialect7) => {
|
|
|
19904
20259
|
cur,
|
|
19905
20260
|
tablesResolver,
|
|
19906
20261
|
columnsResolver,
|
|
19907
|
-
|
|
20262
|
+
dialect8
|
|
19908
20263
|
);
|
|
19909
20264
|
};
|
|
19910
20265
|
var promptColumnsConflicts = async (tableName, newColumns, missingColumns) => {
|
|
@@ -20014,7 +20369,7 @@ var import_fs6 = __toESM(require("fs"));
|
|
|
20014
20369
|
// src/cli/commands/check.ts
|
|
20015
20370
|
var import_fs4 = __toESM(require("fs"));
|
|
20016
20371
|
var checkHandler = (config) => {
|
|
20017
|
-
const { dialect:
|
|
20372
|
+
const { dialect: dialect8, out } = config;
|
|
20018
20373
|
const outFolderExists = import_fs4.default.existsSync(out);
|
|
20019
20374
|
if (!outFolderExists) {
|
|
20020
20375
|
import_fs4.default.mkdirSync(out);
|
|
@@ -20058,7 +20413,7 @@ var import_crypto2 = require("crypto");
|
|
|
20058
20413
|
var import_fs5 = __toESM(require("fs"));
|
|
20059
20414
|
var import_path3 = __toESM(require("path"));
|
|
20060
20415
|
var upHandler = (config) => {
|
|
20061
|
-
const { dialect:
|
|
20416
|
+
const { dialect: dialect8, out } = config;
|
|
20062
20417
|
const outFolderExists = import_fs5.default.existsSync(out);
|
|
20063
20418
|
if (!outFolderExists) {
|
|
20064
20419
|
import_fs5.default.mkdirSync(out);
|
|
@@ -20105,10 +20460,10 @@ var update1to2 = (json) => {
|
|
|
20105
20460
|
const ref = it2[1].references;
|
|
20106
20461
|
const fkName = ref == null ? void 0 : ref.foreignKeyName;
|
|
20107
20462
|
const table5 = ref == null ? void 0 : ref.table;
|
|
20108
|
-
const
|
|
20463
|
+
const column5 = ref == null ? void 0 : ref.column;
|
|
20109
20464
|
const onDelete = ref == null ? void 0 : ref.onDelete;
|
|
20110
20465
|
const onUpdate = ref == null ? void 0 : ref.onDelete;
|
|
20111
|
-
const newRef = ref ? `${fkName};${table5};${
|
|
20466
|
+
const newRef = ref ? `${fkName};${table5};${column5};${onDelete != null ? onDelete : ""};${onUpdate != null ? onUpdate : ""}` : void 0;
|
|
20112
20467
|
return [it2[0], { ...it2[1], references: newRef }];
|
|
20113
20468
|
})
|
|
20114
20469
|
);
|
|
@@ -20148,13 +20503,13 @@ var update2to3 = (json, prevId) => {
|
|
|
20148
20503
|
const tableName = name;
|
|
20149
20504
|
const fks = Object.fromEntries(
|
|
20150
20505
|
refs.map((it2) => {
|
|
20151
|
-
const [name2, table4,
|
|
20506
|
+
const [name2, table4, column5, onDelete, onUpdate] = it2.value.split(";");
|
|
20152
20507
|
const fk4 = {
|
|
20153
20508
|
name: name2,
|
|
20154
20509
|
tableFrom: tableName,
|
|
20155
20510
|
columnsFrom: [it2.column],
|
|
20156
20511
|
tableTo: table4,
|
|
20157
|
-
columnsTo: [
|
|
20512
|
+
columnsTo: [column5],
|
|
20158
20513
|
onUpdate,
|
|
20159
20514
|
onDelete
|
|
20160
20515
|
};
|
|
@@ -20195,11 +20550,419 @@ var update2to3 = (json, prevId) => {
|
|
|
20195
20550
|
};
|
|
20196
20551
|
|
|
20197
20552
|
// src/cli/index.ts
|
|
20553
|
+
var import_hanji5 = __toESM(require_hanji());
|
|
20554
|
+
|
|
20555
|
+
// src/cli/commands/pgIntrospect.ts
|
|
20556
|
+
var import_node2 = require("drizzle-orm-pg/node");
|
|
20198
20557
|
var import_hanji4 = __toESM(require_hanji());
|
|
20558
|
+
var import_pg = require("pg");
|
|
20559
|
+
|
|
20560
|
+
// src/@types/utils.ts
|
|
20561
|
+
String.prototype.trimChar = function(char) {
|
|
20562
|
+
let start = 0;
|
|
20563
|
+
let end = this.length;
|
|
20564
|
+
while (start < end && this[start] === char)
|
|
20565
|
+
++start;
|
|
20566
|
+
while (end > start && this[end - 1] === char)
|
|
20567
|
+
--end;
|
|
20568
|
+
return start > 0 || end < this.length ? this.substring(start, end) : this.toString();
|
|
20569
|
+
};
|
|
20570
|
+
String.prototype.squashSpaces = function() {
|
|
20571
|
+
return this.replace(/ +/g, " ").trim();
|
|
20572
|
+
};
|
|
20573
|
+
String.prototype.camelCase = function() {
|
|
20574
|
+
return this.toLowerCase().replace(/([-_ ][a-z0-9])/g, (group) => {
|
|
20575
|
+
return group.toUpperCase().replace("-", "").replace("_", "").replace(" ", "");
|
|
20576
|
+
});
|
|
20577
|
+
};
|
|
20578
|
+
|
|
20579
|
+
// src/introspect.ts
|
|
20580
|
+
init_pgSerializer();
|
|
20581
|
+
var pgImportsList = /* @__PURE__ */ new Set([
|
|
20582
|
+
"pgTable",
|
|
20583
|
+
"pgEnum",
|
|
20584
|
+
"smallint",
|
|
20585
|
+
"integer",
|
|
20586
|
+
"bigint",
|
|
20587
|
+
"boolean",
|
|
20588
|
+
"text",
|
|
20589
|
+
"varchar",
|
|
20590
|
+
"serial",
|
|
20591
|
+
"bigserial",
|
|
20592
|
+
"decimal",
|
|
20593
|
+
"numeric",
|
|
20594
|
+
"real",
|
|
20595
|
+
"json",
|
|
20596
|
+
"jsonb",
|
|
20597
|
+
"time",
|
|
20598
|
+
"timestamp",
|
|
20599
|
+
"date",
|
|
20600
|
+
"interval",
|
|
20601
|
+
"bigint",
|
|
20602
|
+
"bigserial",
|
|
20603
|
+
"doublePrecision"
|
|
20604
|
+
]);
|
|
20605
|
+
var objToStatement = (json) => {
|
|
20606
|
+
json = Object.fromEntries(Object.entries(json).filter((it) => it[1]));
|
|
20607
|
+
const keys = Object.keys(json);
|
|
20608
|
+
if (keys.length === 0)
|
|
20609
|
+
return;
|
|
20610
|
+
let statement = "{ ";
|
|
20611
|
+
statement += keys.map((it) => `"${it}": "${json[it]}"`).join(", ");
|
|
20612
|
+
statement += " }";
|
|
20613
|
+
return statement;
|
|
20614
|
+
};
|
|
20615
|
+
var objToStatement2 = (json) => {
|
|
20616
|
+
json = Object.fromEntries(Object.entries(json).filter((it) => it[1]));
|
|
20617
|
+
const keys = Object.keys(json);
|
|
20618
|
+
if (keys.length === 0)
|
|
20619
|
+
return;
|
|
20620
|
+
let statement = "{ ";
|
|
20621
|
+
statement += keys.map((it) => `${it}: "${json[it]}"`).join(", ");
|
|
20622
|
+
statement += " }";
|
|
20623
|
+
return statement;
|
|
20624
|
+
};
|
|
20625
|
+
var timeConfig = (json) => {
|
|
20626
|
+
json = Object.fromEntries(Object.entries(json).filter((it) => it[1]));
|
|
20627
|
+
const keys = Object.keys(json);
|
|
20628
|
+
if (keys.length === 0)
|
|
20629
|
+
return;
|
|
20630
|
+
let statement = "{ ";
|
|
20631
|
+
statement += keys.map((it) => `${it}: ${json[it]}`).join(", ");
|
|
20632
|
+
statement += " }";
|
|
20633
|
+
return statement;
|
|
20634
|
+
};
|
|
20635
|
+
var importsPatch = {
|
|
20636
|
+
"double precision": "doublePrecision",
|
|
20637
|
+
"timestamp without time zone": "timestamp"
|
|
20638
|
+
};
|
|
20639
|
+
var relations = /* @__PURE__ */ new Set();
|
|
20640
|
+
var schemaToTypeScript = (schema5) => {
|
|
20641
|
+
Object.values(schema5.tables).forEach((table4) => {
|
|
20642
|
+
Object.values(table4.foreignKeys).forEach((fk4) => {
|
|
20643
|
+
const relation = `${fk4.tableFrom}-${fk4.tableTo}`;
|
|
20644
|
+
relations.add(relation);
|
|
20645
|
+
});
|
|
20646
|
+
});
|
|
20647
|
+
const enumTypes = new Set(Object.values(schema5.enums).map((it) => it.name));
|
|
20648
|
+
const imports = Object.values(schema5.tables).reduce(
|
|
20649
|
+
(res, it) => {
|
|
20650
|
+
const idxImports = Object.values(it.indexes).map(
|
|
20651
|
+
(idx) => idx.isUnique ? "uniqueIndex" : "index"
|
|
20652
|
+
);
|
|
20653
|
+
const fkImpots = Object.values(it.foreignKeys).map((it2) => "foreignKey");
|
|
20654
|
+
res.pg.push(...idxImports);
|
|
20655
|
+
res.pg.push(...fkImpots);
|
|
20656
|
+
const columnImports = Object.values(it.columns).map((col) => {
|
|
20657
|
+
var _a;
|
|
20658
|
+
let patched = (_a = importsPatch[col.type]) != null ? _a : col.type;
|
|
20659
|
+
patched = patched.startsWith("varchar(") ? "varchar" : patched;
|
|
20660
|
+
patched = patched.startsWith("numeric(") ? "numeric" : patched;
|
|
20661
|
+
return patched;
|
|
20662
|
+
}).filter((type) => {
|
|
20663
|
+
return pgImportsList.has(type);
|
|
20664
|
+
});
|
|
20665
|
+
res.pg.push(...columnImports);
|
|
20666
|
+
return res;
|
|
20667
|
+
},
|
|
20668
|
+
{ pg: [] }
|
|
20669
|
+
);
|
|
20670
|
+
const enumStatements = Object.values(schema5.enums).map((it) => {
|
|
20671
|
+
const values = Object.values(it.values).map((it2) => `'${it2}'`).join(", ");
|
|
20672
|
+
return `export const ${it.name.camelCase()} = pgEnum("${it.name}", [${values}])
|
|
20673
|
+
`;
|
|
20674
|
+
}).join("");
|
|
20675
|
+
const tableStatements = Object.values(schema5.tables).map((table4) => {
|
|
20676
|
+
let statement = `export const ${table4.name.camelCase()} = pgTable("${table4.name}", {
|
|
20677
|
+
`;
|
|
20678
|
+
statement += createTableColumns(
|
|
20679
|
+
Object.values(table4.columns),
|
|
20680
|
+
Object.values(table4.foreignKeys),
|
|
20681
|
+
enumTypes
|
|
20682
|
+
);
|
|
20683
|
+
statement += "}";
|
|
20684
|
+
const filteredFKs = Object.values(table4.foreignKeys).filter((it) => {
|
|
20685
|
+
return it.columnsFrom.length > 1 || isSelf(it) || isCyclic(it);
|
|
20686
|
+
});
|
|
20687
|
+
if (Object.keys(table4.indexes).length > 0 || filteredFKs.length > 0) {
|
|
20688
|
+
statement += ",\n";
|
|
20689
|
+
statement += "(table) => {\n";
|
|
20690
|
+
statement += " return {\n";
|
|
20691
|
+
statement += createTableIndexes(table4.name, Object.values(table4.indexes));
|
|
20692
|
+
statement += createTableFKs(Object.values(filteredFKs));
|
|
20693
|
+
statement += " }\n";
|
|
20694
|
+
statement += "}";
|
|
20695
|
+
}
|
|
20696
|
+
statement += ");";
|
|
20697
|
+
return statement;
|
|
20698
|
+
});
|
|
20699
|
+
const uniquePgImports = ["pgTable", "pgEnum", ...new Set(imports.pg)];
|
|
20700
|
+
let result = `import { ${uniquePgImports.join(
|
|
20701
|
+
", "
|
|
20702
|
+
)} } from "drizzle-orm-pg"
|
|
20703
|
+
|
|
20704
|
+
`;
|
|
20705
|
+
result += enumStatements;
|
|
20706
|
+
result += "\n";
|
|
20707
|
+
result += tableStatements.join("\n\n");
|
|
20708
|
+
return result;
|
|
20709
|
+
};
|
|
20710
|
+
var isCyclic = (fk4) => {
|
|
20711
|
+
const key = `${fk4.tableFrom}-${fk4.tableTo}`;
|
|
20712
|
+
const reverse = `${fk4.tableTo}-${fk4.tableFrom}`;
|
|
20713
|
+
return relations.has(key) && relations.has(reverse);
|
|
20714
|
+
};
|
|
20715
|
+
var isSelf = (fk4) => {
|
|
20716
|
+
return fk4.tableFrom === fk4.tableTo;
|
|
20717
|
+
};
|
|
20718
|
+
var column4 = (type, name, enumTypes, defaultValue) => {
|
|
20719
|
+
const lowered = type.toLowerCase();
|
|
20720
|
+
if (lowered === "serial") {
|
|
20721
|
+
return `${name.camelCase()}: serial("${name}")`;
|
|
20722
|
+
}
|
|
20723
|
+
if (lowered === "bigserial") {
|
|
20724
|
+
return `${name.camelCase()}: bigserial("${name}", { mode: "bigint" })`;
|
|
20725
|
+
}
|
|
20726
|
+
if (lowered === "integer") {
|
|
20727
|
+
let out = `${name.camelCase()}: integer("${name}")`;
|
|
20728
|
+
out += defaultValue ? `.default(${defaultValue})` : "";
|
|
20729
|
+
return out;
|
|
20730
|
+
}
|
|
20731
|
+
if (lowered === "smallint") {
|
|
20732
|
+
let out = `${name.camelCase()}: smallint("${name}")`;
|
|
20733
|
+
out += defaultValue ? `.default(${defaultValue})` : "";
|
|
20734
|
+
return out;
|
|
20735
|
+
}
|
|
20736
|
+
if (lowered === "bigint") {
|
|
20737
|
+
let out = `${name.camelCase()}: bigint("${name}", { mode: "bigint" })`;
|
|
20738
|
+
out += defaultValue ? `.default(BigInt(${defaultValue}))` : "";
|
|
20739
|
+
return out;
|
|
20740
|
+
}
|
|
20741
|
+
if (lowered === "boolean") {
|
|
20742
|
+
let out = `${name.camelCase()}: boolean("${name}")`;
|
|
20743
|
+
out += defaultValue ? `.default(${defaultValue})` : "";
|
|
20744
|
+
return out;
|
|
20745
|
+
}
|
|
20746
|
+
if (lowered === "double precision") {
|
|
20747
|
+
let out = `${name.camelCase()}: doublePrecision("${name}")`;
|
|
20748
|
+
out += defaultValue ? `.default(${defaultValue})` : "";
|
|
20749
|
+
return out;
|
|
20750
|
+
}
|
|
20751
|
+
if (lowered === "real") {
|
|
20752
|
+
let out = `${name.camelCase()}: real("${name}")`;
|
|
20753
|
+
out += defaultValue ? `.default(${defaultValue})` : "";
|
|
20754
|
+
return out;
|
|
20755
|
+
}
|
|
20756
|
+
if (lowered.startsWith("numeric")) {
|
|
20757
|
+
let params;
|
|
20758
|
+
if (lowered.length > 7) {
|
|
20759
|
+
const [precision, scale] = lowered.slice(8, lowered.length - 1).split(",");
|
|
20760
|
+
params = { precision, scale };
|
|
20761
|
+
}
|
|
20762
|
+
let out = params ? `${name.camelCase()}: numeric("${name}", ${timeConfig(params)})` : `${name.camelCase()}: numeric("${name}")`;
|
|
20763
|
+
return out;
|
|
20764
|
+
}
|
|
20765
|
+
if (lowered.startsWith("timestamp")) {
|
|
20766
|
+
const withTimezone = lowered.includes("with time zone");
|
|
20767
|
+
const split = lowered.split(" ");
|
|
20768
|
+
let precision = split.length >= 2 ? Number(split[1].substring(1, 2)) : null;
|
|
20769
|
+
precision = precision ? precision : null;
|
|
20770
|
+
const params = timeConfig({ precision, withTimezone });
|
|
20771
|
+
let out = params ? `${name.camelCase()}: timestamp("${name}", ${params})` : `${name.camelCase()}: timestamp("${name}")`;
|
|
20772
|
+
defaultValue = (defaultValue == null ? void 0 : defaultValue.endsWith("::timestamp without time zone")) ? defaultValue.substring(0, defaultValue.length - 29) : defaultValue;
|
|
20773
|
+
defaultValue = (defaultValue == null ? void 0 : defaultValue.endsWith("::timestamp with time zone")) ? defaultValue.substring(0, defaultValue.length - 26) : defaultValue;
|
|
20774
|
+
defaultValue = defaultValue === "now()" || defaultValue === "CURRENT_TIMESTAMP" ? ".defaultNow()" : defaultValue ? `.default(${defaultValue})` : "";
|
|
20775
|
+
out += defaultValue;
|
|
20776
|
+
return out;
|
|
20777
|
+
}
|
|
20778
|
+
if (lowered.startsWith("time")) {
|
|
20779
|
+
const withTimezone = lowered.includes("with time zone");
|
|
20780
|
+
const split = lowered.split(" ");
|
|
20781
|
+
let precision = split.length >= 2 ? Number(split[1].substring(1, 2)) : null;
|
|
20782
|
+
precision = precision ? precision : null;
|
|
20783
|
+
const params = timeConfig({ precision, withTimezone });
|
|
20784
|
+
let out = params ? `${name.camelCase()}: time("${name}", ${params})` : `${name.camelCase()}: time("${name}")`;
|
|
20785
|
+
defaultValue = defaultValue === "now()" ? ".defaultNow()" : defaultValue ? `.default(${defaultValue})` : "";
|
|
20786
|
+
out += defaultValue;
|
|
20787
|
+
return out;
|
|
20788
|
+
}
|
|
20789
|
+
if (lowered.startsWith("interval")) {
|
|
20790
|
+
const withTimezone = lowered.includes("with time zone");
|
|
20791
|
+
const split = lowered.split(" ");
|
|
20792
|
+
let precision = split.length >= 2 ? Number(split[1].substring(1, 2)) : null;
|
|
20793
|
+
precision = precision ? precision : null;
|
|
20794
|
+
const params = timeConfig({ precision, withTimezone });
|
|
20795
|
+
let out = params ? `${name.camelCase()}: interval(${name}, ${params})` : `${name.camelCase()}: interval("${name}")`;
|
|
20796
|
+
out += defaultValue ? `.default(${defaultValue})` : "";
|
|
20797
|
+
return out;
|
|
20798
|
+
}
|
|
20799
|
+
if (lowered === "date") {
|
|
20800
|
+
let out = `${name}: date("${name}")`;
|
|
20801
|
+
defaultValue = defaultValue === "now()" ? ".defaultNow()" : defaultValue ? `.default(${defaultValue})` : "";
|
|
20802
|
+
out += defaultValue;
|
|
20803
|
+
return out;
|
|
20804
|
+
}
|
|
20805
|
+
if (lowered === "text") {
|
|
20806
|
+
let out = `${name.camelCase()}: text("${name}")`;
|
|
20807
|
+
out += defaultValue ? `.default(${defaultValue})` : "";
|
|
20808
|
+
return out;
|
|
20809
|
+
}
|
|
20810
|
+
if (lowered === "json") {
|
|
20811
|
+
let out = `${name.camelCase()}: json("${name}")`;
|
|
20812
|
+
defaultValue = (defaultValue == null ? void 0 : defaultValue.endsWith("::json")) ? defaultValue.substring(1, defaultValue.length - 7) : defaultValue;
|
|
20813
|
+
const def = defaultValue ? objToStatement(JSON.parse(defaultValue)) : null;
|
|
20814
|
+
out += defaultValue ? `.default(${def})` : "";
|
|
20815
|
+
return out;
|
|
20816
|
+
}
|
|
20817
|
+
if (lowered === "jsonb") {
|
|
20818
|
+
let out = `${name.camelCase()}: jsonb("${name}")`;
|
|
20819
|
+
defaultValue = (defaultValue == null ? void 0 : defaultValue.endsWith("::jsonb")) ? defaultValue.substring(1, defaultValue.length - 8) : defaultValue;
|
|
20820
|
+
const def = defaultValue ? objToStatement(JSON.parse(defaultValue)) : null;
|
|
20821
|
+
out += defaultValue ? `.default(${def})` : "";
|
|
20822
|
+
return out;
|
|
20823
|
+
}
|
|
20824
|
+
if (lowered.startsWith("varchar")) {
|
|
20825
|
+
const split = lowered.split(" ");
|
|
20826
|
+
let out;
|
|
20827
|
+
if (split[1]) {
|
|
20828
|
+
out = `${name.camelCase()}: varchar("${name}", { size: ${split[1]} })`;
|
|
20829
|
+
} else {
|
|
20830
|
+
out = `${name.camelCase()}: varchar("${name}")`;
|
|
20831
|
+
}
|
|
20832
|
+
defaultValue = (defaultValue == null ? void 0 : defaultValue.endsWith("::character varying")) ? defaultValue.substring(0, defaultValue.length - 19) : defaultValue;
|
|
20833
|
+
out += defaultValue ? `.default(${defaultValue})` : "";
|
|
20834
|
+
return out;
|
|
20835
|
+
}
|
|
20836
|
+
if (enumTypes.has(type)) {
|
|
20837
|
+
return `${name.camelCase()}: ${type.camelCase()}("${name}")`;
|
|
20838
|
+
}
|
|
20839
|
+
console.log("uknown", type);
|
|
20840
|
+
};
|
|
20841
|
+
var createTableColumns = (columns, fks, enumTypes) => {
|
|
20842
|
+
let statement = "";
|
|
20843
|
+
const oneColumnsFKs = Object.values(fks).filter((it) => {
|
|
20844
|
+
return !isSelf(it) && !isCyclic(it);
|
|
20845
|
+
}).filter((it) => it.columnsFrom.length === 1);
|
|
20846
|
+
const fkByColumnName = oneColumnsFKs.reduce((res, it) => {
|
|
20847
|
+
const arr = res[it.columnsFrom[0]] || [];
|
|
20848
|
+
arr.push(it);
|
|
20849
|
+
res[it.columnsFrom[0]] = arr;
|
|
20850
|
+
return res;
|
|
20851
|
+
}, {});
|
|
20852
|
+
columns.forEach((it) => {
|
|
20853
|
+
statement += " ";
|
|
20854
|
+
statement += column4(it.type, it.name, enumTypes, it.default);
|
|
20855
|
+
statement += it.primaryKey ? ".primaryKey()" : "";
|
|
20856
|
+
statement += it.notNull ? ".notNull()" : "";
|
|
20857
|
+
const fks2 = fkByColumnName[it.name];
|
|
20858
|
+
if (fks2) {
|
|
20859
|
+
const fksStatement = fks2.map((it2) => {
|
|
20860
|
+
const onDelete = it2.onDelete && it2.onDelete !== "no action" ? it2.onDelete : null;
|
|
20861
|
+
const onUpdate = it2.onUpdate && it2.onUpdate !== "no action" ? it2.onUpdate : null;
|
|
20862
|
+
const params = { onDelete, onUpdate };
|
|
20863
|
+
const paramsStr = objToStatement2(params);
|
|
20864
|
+
if (paramsStr) {
|
|
20865
|
+
return `.references(() => ${it2.tableTo.camelCase()}.${it2.columnsTo[0].camelCase()}, ${paramsStr} )`;
|
|
20866
|
+
}
|
|
20867
|
+
return `.references(() => ${it2.tableTo.camelCase()}.${it2.columnsTo[0].camelCase()})`;
|
|
20868
|
+
}).join("");
|
|
20869
|
+
statement += fksStatement;
|
|
20870
|
+
}
|
|
20871
|
+
statement += ",\n";
|
|
20872
|
+
});
|
|
20873
|
+
return statement;
|
|
20874
|
+
};
|
|
20875
|
+
var createTableIndexes = (tableName, idxs) => {
|
|
20876
|
+
let statement = "";
|
|
20877
|
+
idxs.forEach((it) => {
|
|
20878
|
+
let idxKey = it.name.startsWith(tableName) ? it.name.slice(tableName.length + 1) : it.name;
|
|
20879
|
+
idxKey = idxKey.endsWith("_index") ? idxKey.slice(0, -"_index".length) + "_idx" : idxKey;
|
|
20880
|
+
idxKey = idxKey.camelCase();
|
|
20881
|
+
const indexGeneratedName = indexName(tableName, it.columns);
|
|
20882
|
+
const escapedIndexName = indexGeneratedName === it.name ? "" : `"${it.name}"`;
|
|
20883
|
+
statement += ` ${idxKey}: `;
|
|
20884
|
+
statement += it.isUnique ? "uniqueIndex(" : "index(";
|
|
20885
|
+
statement += `${escapedIndexName})`;
|
|
20886
|
+
statement += `.on(${it.columns.map((it2) => `table.${it2.camelCase()}`).join(", ")}),`;
|
|
20887
|
+
statement += `
|
|
20888
|
+
`;
|
|
20889
|
+
});
|
|
20890
|
+
return statement;
|
|
20891
|
+
};
|
|
20892
|
+
var createTableFKs = (fks) => {
|
|
20893
|
+
let statement = "";
|
|
20894
|
+
fks.forEach((it) => {
|
|
20895
|
+
statement += ` ${it.name.camelCase()}: foreignKey({
|
|
20896
|
+
`;
|
|
20897
|
+
statement += ` columns: [${it.columnsFrom.map((i) => `table.${i.camelCase()}`).join(", ")}],
|
|
20898
|
+
`;
|
|
20899
|
+
statement += ` foreignColumns: [${it.columnsTo.map((i) => `${it.tableTo.camelCase()}.${i.camelCase()}`).join(", ")}]
|
|
20900
|
+
`;
|
|
20901
|
+
statement += ` })`;
|
|
20902
|
+
statement += it.onUpdate && it.onUpdate !== "no action" ? `.onUpdate("${it.onUpdate}")` : "";
|
|
20903
|
+
statement += it.onDelete && it.onDelete !== "no action" ? `.onDelete("${it.onDelete}")` : "";
|
|
20904
|
+
statement += `,
|
|
20905
|
+
`;
|
|
20906
|
+
});
|
|
20907
|
+
return statement;
|
|
20908
|
+
};
|
|
20909
|
+
|
|
20910
|
+
// src/cli/commands/pgIntrospect.ts
|
|
20911
|
+
init_pgSerializer();
|
|
20912
|
+
var PgConfig1 = objectType({
|
|
20913
|
+
host: stringType(),
|
|
20914
|
+
port: coerce.number().optional(),
|
|
20915
|
+
user: stringType().default("postgres"),
|
|
20916
|
+
password: stringType().optional(),
|
|
20917
|
+
database: stringType(),
|
|
20918
|
+
ssl: coerce.boolean().optional()
|
|
20919
|
+
}).strict();
|
|
20920
|
+
var PgConfig2 = objectType({
|
|
20921
|
+
connectionString: stringType()
|
|
20922
|
+
}).strict();
|
|
20923
|
+
var pgIntrospect = async (config) => {
|
|
20924
|
+
const pool = new import_pg.Pool(config);
|
|
20925
|
+
const db = (0, import_node2.drizzle)(pool);
|
|
20926
|
+
const progress = new Progress();
|
|
20927
|
+
const res = await (0, import_hanji4.renderWithTask)(
|
|
20928
|
+
progress,
|
|
20929
|
+
fromDatabase(db, (msg) => {
|
|
20930
|
+
})
|
|
20931
|
+
);
|
|
20932
|
+
const tablesCount = Object.keys(res.tables).length.toFixed(0);
|
|
20933
|
+
const columnsCount = Object.values(res.tables).map((it) => Object.keys(it.columns)).flat().length.toFixed(0);
|
|
20934
|
+
const indexesCount = Object.values(res.tables).map((it) => Object.keys(it.indexes)).flat().length.toFixed(0);
|
|
20935
|
+
const fksCount = Object.values(res.tables).map((it) => Object.keys(it.foreignKeys)).flat().length.toFixed(0);
|
|
20936
|
+
const enumsCount = Object.keys(res.enums).length.toFixed(0);
|
|
20937
|
+
const width = Math.max.apply(
|
|
20938
|
+
null,
|
|
20939
|
+
[tablesCount, columnsCount, indexesCount, fksCount, enumsCount].map(
|
|
20940
|
+
(it) => it.length
|
|
20941
|
+
)
|
|
20942
|
+
);
|
|
20943
|
+
let info2 = "";
|
|
20944
|
+
info2 += `[${source_default.green("\u2713")}] ${source_default.bold(tablesCount.padEnd(width))} tables fetched
|
|
20945
|
+
`;
|
|
20946
|
+
info2 += `[${source_default.green("\u2713")}] ${source_default.bold(columnsCount.padEnd(width))} columns fetched
|
|
20947
|
+
`;
|
|
20948
|
+
info2 += `[${source_default.green("\u2713")}] ${source_default.bold(enumsCount.padEnd(width))} enums fetched
|
|
20949
|
+
`;
|
|
20950
|
+
info2 += `[${source_default.green("\u2713")}] ${source_default.bold(indexesCount.padEnd(width))} indexes fetched
|
|
20951
|
+
`;
|
|
20952
|
+
info2 += `[${source_default.green("\u2713")}] ${source_default.bold(fksCount.padEnd(width))} foreign keys fetched
|
|
20953
|
+
`;
|
|
20954
|
+
(0, import_hanji4.render)(info2);
|
|
20955
|
+
const schema5 = { id: originUUID, prevId: "", ...res };
|
|
20956
|
+
const ts = schemaToTypeScript(schema5);
|
|
20957
|
+
return { schema: schema5, ts };
|
|
20958
|
+
};
|
|
20959
|
+
|
|
20960
|
+
// src/cli/index.ts
|
|
20199
20961
|
var import_path4 = __toESM(require("path"));
|
|
20962
|
+
var dialect7 = enumType(["pg", "sqlite", "mysql"]);
|
|
20200
20963
|
var configSchema = objectType({
|
|
20201
20964
|
schema: stringType(),
|
|
20202
|
-
dialect:
|
|
20965
|
+
dialect: dialect7,
|
|
20203
20966
|
out: stringType().default("drizzle")
|
|
20204
20967
|
}).strict();
|
|
20205
20968
|
var optionsSchema = objectType({
|
|
@@ -20224,7 +20987,7 @@ var migrationCommand = new Command("generate").alias("migrate").option(
|
|
|
20224
20987
|
await prepareAndMigrate(result);
|
|
20225
20988
|
});
|
|
20226
20989
|
var prepareGenerateConfig = (options) => {
|
|
20227
|
-
const { schema: schema5, out, dialect:
|
|
20990
|
+
const { schema: schema5, out, dialect: dialect8, config } = options;
|
|
20228
20991
|
if (!(schema5 || out)) {
|
|
20229
20992
|
const path3 = config != null ? config : "drizzle.config.json";
|
|
20230
20993
|
const drizzleConfig = JSON.parse(
|
|
@@ -20232,30 +20995,55 @@ var prepareGenerateConfig = (options) => {
|
|
|
20232
20995
|
);
|
|
20233
20996
|
return drizzleConfig;
|
|
20234
20997
|
}
|
|
20235
|
-
if (!schema5 || !
|
|
20998
|
+
if (!schema5 || !dialect8) {
|
|
20236
20999
|
return new Error(`'schema' and 'dialect' param must be set`);
|
|
20237
21000
|
}
|
|
20238
|
-
return configSchema.parse({ schema: schema5, out, dialect:
|
|
21001
|
+
return configSchema.parse({ schema: schema5, out, dialect: dialect8 });
|
|
20239
21002
|
};
|
|
20240
21003
|
var checkSchema = objectType({
|
|
20241
21004
|
dialect: stringType().default(""),
|
|
20242
21005
|
out: stringType().default("drizzle")
|
|
20243
21006
|
}).strict();
|
|
20244
21007
|
var checkCommand = new Command("check").option("--out <out>", `Output folder, 'drizzle' by default`).option("--dialect <dialect>", "One of pg|mysql|sqlite, pg by default").action((options) => {
|
|
20245
|
-
const { out, dialect:
|
|
20246
|
-
if (!out || !
|
|
20247
|
-
(0,
|
|
21008
|
+
const { out, dialect: dialect8 } = checkSchema.parse(options);
|
|
21009
|
+
if (!out || !dialect8) {
|
|
21010
|
+
(0, import_hanji5.render)(error(`'out' folder and 'dialect' params must be set`));
|
|
20248
21011
|
process.exit(0);
|
|
20249
21012
|
}
|
|
20250
|
-
checkHandler({ out, dialect:
|
|
21013
|
+
checkHandler({ out, dialect: dialect8 });
|
|
20251
21014
|
});
|
|
20252
21015
|
var upCommand = new Command("up").option("--out <out>", `Output folder, 'drizzle' by default`).option("--dialect <dialect>", "One of pg|mysql|sqlite, pg by default").action((options) => {
|
|
20253
|
-
const { out, dialect:
|
|
20254
|
-
if (!out || !
|
|
20255
|
-
(0,
|
|
21016
|
+
const { out, dialect: dialect8 } = checkSchema.parse(options);
|
|
21017
|
+
if (!out || !dialect8) {
|
|
21018
|
+
(0, import_hanji5.render)(error(`'out' folder and 'dialect' params must be set`));
|
|
20256
21019
|
process.exit(0);
|
|
20257
21020
|
}
|
|
20258
|
-
upHandler({ out, dialect:
|
|
21021
|
+
upHandler({ out, dialect: dialect8 });
|
|
21022
|
+
});
|
|
21023
|
+
var pt1 = objectType({
|
|
21024
|
+
out: stringType()
|
|
21025
|
+
});
|
|
21026
|
+
var pgIntrospectConfig = unionType([
|
|
21027
|
+
pt1.extend(PgConfig2.shape),
|
|
21028
|
+
pt1.extend(PgConfig1.shape)
|
|
21029
|
+
]);
|
|
21030
|
+
var introspectPgCommand = new Command("introspect:pg").option("--out <out>", `Result folder`).option("--connectionString <connectionString>", "Postgres connection string").option("--host <host>", "Postgres host").option("--port <port>", "Postgres port").option("--user <user>", "Postgres user").option("--password <password>", "Postgres password").option("--database <database>", "Postgres database name").option("--ssl <ssl>", "Postgres ssl").action(async (options) => {
|
|
21031
|
+
const res = pgIntrospectConfig.safeParse(options);
|
|
21032
|
+
if (!res.success) {
|
|
21033
|
+
console.log("Missing required params");
|
|
21034
|
+
return;
|
|
21035
|
+
}
|
|
21036
|
+
const folder = res.data.out;
|
|
21037
|
+
if (!(0, import_fs6.existsSync)(folder)) {
|
|
21038
|
+
(0, import_fs6.mkdirSync)(folder);
|
|
21039
|
+
}
|
|
21040
|
+
const { schema: schema5, ts } = await pgIntrospect(res.data);
|
|
21041
|
+
const snapshotFile = import_path4.default.join(folder, "snapshot.json");
|
|
21042
|
+
const schemaFile = import_path4.default.join(folder, "schema.ts");
|
|
21043
|
+
(0, import_fs6.writeFileSync)(snapshotFile, JSON.stringify(schema5));
|
|
21044
|
+
(0, import_fs6.writeFileSync)(schemaFile, ts);
|
|
21045
|
+
(0, import_hanji5.render)(`[${source_default.green("\u2713")}] You schema file is ready \u279C ${source_default.bold.underline.blue(schemaFile)} \u{1F680}`);
|
|
21046
|
+
process.exit(1);
|
|
20259
21047
|
});
|
|
20260
21048
|
program.addCommand(migrationCommand);
|
|
20261
21049
|
program.addCommand(checkCommand);
|