drizzle-kit 0.22.0-3b0ba5f → 0.22.0-5b09380
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/bin.cjs +16869 -10261
- package/index.d.mts +9 -1
- package/index.d.ts +9 -1
- package/package.json +2 -1
- package/payload.js +182 -97
- package/payload.mjs +167 -82
- package/utils-studio.js +591 -12
- package/utils-studio.mjs +591 -12
- package/utils.js +29 -1
- package/utils.mjs +28 -1
package/payload.mjs
CHANGED
|
@@ -8530,7 +8530,7 @@ var init_utils4 = __esm({
|
|
|
8530
8530
|
|
|
8531
8531
|
// src/cli/views.ts
|
|
8532
8532
|
import { Prompt, render, SelectState, TaskView } from "hanji";
|
|
8533
|
-
var error, isRenamePromptItem, ResolveColumnSelect, tableKey, ResolveSelect, ResolveSchemasSelect;
|
|
8533
|
+
var error, isRenamePromptItem, ResolveColumnSelect, tableKey, ResolveSelect, ResolveSchemasSelect, Spinner, ProgressView;
|
|
8534
8534
|
var init_views = __esm({
|
|
8535
8535
|
"src/cli/views.ts"() {
|
|
8536
8536
|
"use strict";
|
|
@@ -8682,6 +8682,42 @@ Is ${source_default.bold.blue(
|
|
|
8682
8682
|
return this.state.items[this.state.selectedIdx];
|
|
8683
8683
|
}
|
|
8684
8684
|
};
|
|
8685
|
+
Spinner = class {
|
|
8686
|
+
constructor(frames) {
|
|
8687
|
+
this.frames = frames;
|
|
8688
|
+
this.offset = 0;
|
|
8689
|
+
this.tick = () => {
|
|
8690
|
+
this.iterator();
|
|
8691
|
+
};
|
|
8692
|
+
this.value = () => {
|
|
8693
|
+
return this.frames[this.offset];
|
|
8694
|
+
};
|
|
8695
|
+
this.iterator = () => {
|
|
8696
|
+
this.offset += 1;
|
|
8697
|
+
this.offset %= frames.length - 1;
|
|
8698
|
+
};
|
|
8699
|
+
}
|
|
8700
|
+
};
|
|
8701
|
+
ProgressView = class extends TaskView {
|
|
8702
|
+
constructor(progressText, successText) {
|
|
8703
|
+
super();
|
|
8704
|
+
this.progressText = progressText;
|
|
8705
|
+
this.successText = successText;
|
|
8706
|
+
this.spinner = new Spinner("\u28F7\u28EF\u28DF\u287F\u28BF\u28FB\u28FD\u28FE".split(""));
|
|
8707
|
+
this.timeout = setInterval(() => {
|
|
8708
|
+
this.spinner.tick();
|
|
8709
|
+
this.requestLayout();
|
|
8710
|
+
}, 128);
|
|
8711
|
+
this.on("detach", () => clearInterval(this.timeout));
|
|
8712
|
+
}
|
|
8713
|
+
render(status) {
|
|
8714
|
+
if (status === "pending") {
|
|
8715
|
+
const spin = this.spinner.value();
|
|
8716
|
+
return `[${spin}] ${this.progressText}`;
|
|
8717
|
+
}
|
|
8718
|
+
return `[${source_default.green("\u2713")}] ${this.successText}`;
|
|
8719
|
+
}
|
|
8720
|
+
};
|
|
8685
8721
|
}
|
|
8686
8722
|
});
|
|
8687
8723
|
|
|
@@ -8802,6 +8838,12 @@ var init_sqlite = __esm({
|
|
|
8802
8838
|
url: string6(),
|
|
8803
8839
|
authToken: string6()
|
|
8804
8840
|
}),
|
|
8841
|
+
object6({
|
|
8842
|
+
driver: literal5("d1-http"),
|
|
8843
|
+
accountId: string6(),
|
|
8844
|
+
databaseId: string6(),
|
|
8845
|
+
token: string6()
|
|
8846
|
+
}),
|
|
8805
8847
|
object6({
|
|
8806
8848
|
url: string6()
|
|
8807
8849
|
})
|
|
@@ -8851,6 +8893,7 @@ var init_common2 = __esm({
|
|
|
8851
8893
|
literal6("turso"),
|
|
8852
8894
|
literal6("libsql"),
|
|
8853
8895
|
literal6("d1"),
|
|
8896
|
+
literal6("d1-http"),
|
|
8854
8897
|
literal6("expo")
|
|
8855
8898
|
]);
|
|
8856
8899
|
postgresDriver = literal6("aws-data-api");
|
|
@@ -9837,6 +9880,7 @@ ${withStyle.errorWarning(
|
|
|
9837
9880
|
"time without time zone": "::time without time zone",
|
|
9838
9881
|
// "timestamp with time zone": "::timestamp with time zone",
|
|
9839
9882
|
"timestamp without time zone": "::timestamp without time zone",
|
|
9883
|
+
"timestamp(": "::timestamp without time zone",
|
|
9840
9884
|
// date: "::date",
|
|
9841
9885
|
// interval: "::interval",
|
|
9842
9886
|
// character: "::bpchar",
|
|
@@ -9849,15 +9893,15 @@ ${withStyle.errorWarning(
|
|
|
9849
9893
|
"character(": "::bpchar"
|
|
9850
9894
|
};
|
|
9851
9895
|
defaultForColumn = (column4) => {
|
|
9896
|
+
if (column4.column_default === null) {
|
|
9897
|
+
return void 0;
|
|
9898
|
+
}
|
|
9852
9899
|
if (column4.data_type === "serial" || column4.data_type === "smallserial" || column4.data_type === "bigserial") {
|
|
9853
9900
|
return void 0;
|
|
9854
9901
|
}
|
|
9855
9902
|
const hasDifferentDefaultCast = Object.keys(columnToDefault).find(
|
|
9856
9903
|
(it) => column4.data_type.startsWith(it)
|
|
9857
9904
|
);
|
|
9858
|
-
if (column4.column_default === null) {
|
|
9859
|
-
return void 0;
|
|
9860
|
-
}
|
|
9861
9905
|
const columnDefaultAsString = column4.column_default.toString();
|
|
9862
9906
|
if (columnDefaultAsString.endsWith(
|
|
9863
9907
|
hasDifferentDefaultCast ? columnToDefault[hasDifferentDefaultCast] : column4.data_type
|
|
@@ -11339,8 +11383,7 @@ var init_jsonDiffer = __esm({
|
|
|
11339
11383
|
};
|
|
11340
11384
|
findAlternationsInTable = (table4) => {
|
|
11341
11385
|
const columns = table4.columns ?? {};
|
|
11342
|
-
const
|
|
11343
|
-
const altered = Object.keys(columns).filter((it) => !(it.includes("__deleted") || it.includes("__added") || isSemanticallyEqual(it))).map((it) => {
|
|
11386
|
+
const altered = Object.keys(columns).filter((it) => !(it.includes("__deleted") || it.includes("__added"))).map((it) => {
|
|
11344
11387
|
return { name: it, ...columns[it] };
|
|
11345
11388
|
});
|
|
11346
11389
|
const deletedIndexes = Object.fromEntries(
|
|
@@ -11442,6 +11485,9 @@ var init_jsonDiffer = __esm({
|
|
|
11442
11485
|
return it;
|
|
11443
11486
|
}).map((it) => {
|
|
11444
11487
|
if ("type" in it) {
|
|
11488
|
+
if (it.type.__old.replace(" (", "(") === it.type.__new.replace(" (", "(")) {
|
|
11489
|
+
return void 0;
|
|
11490
|
+
}
|
|
11445
11491
|
return {
|
|
11446
11492
|
...it,
|
|
11447
11493
|
type: { type: "changed", old: it.type.__old, new: it.type.__new }
|
|
@@ -11604,7 +11650,7 @@ var init_jsonDiffer = __esm({
|
|
|
11604
11650
|
};
|
|
11605
11651
|
}
|
|
11606
11652
|
return it;
|
|
11607
|
-
});
|
|
11653
|
+
}).filter(Boolean);
|
|
11608
11654
|
return result[0];
|
|
11609
11655
|
};
|
|
11610
11656
|
}
|
|
@@ -12426,20 +12472,21 @@ var init_jsonStatements = __esm({
|
|
|
12426
12472
|
});
|
|
12427
12473
|
};
|
|
12428
12474
|
prepareAlterReferencesJson = (tableName, schema4, foreignKeys) => {
|
|
12429
|
-
const keys = Object.keys(foreignKeys);
|
|
12430
12475
|
const stmts = [];
|
|
12431
|
-
|
|
12432
|
-
stmts.push(
|
|
12433
|
-
|
|
12434
|
-
|
|
12435
|
-
|
|
12436
|
-
|
|
12437
|
-
|
|
12438
|
-
|
|
12439
|
-
|
|
12440
|
-
|
|
12441
|
-
|
|
12442
|
-
|
|
12476
|
+
Object.values(foreignKeys).map((val) => {
|
|
12477
|
+
stmts.push({
|
|
12478
|
+
type: "delete_reference",
|
|
12479
|
+
tableName,
|
|
12480
|
+
schema: schema4,
|
|
12481
|
+
data: val.__old
|
|
12482
|
+
});
|
|
12483
|
+
stmts.push({
|
|
12484
|
+
type: "create_reference",
|
|
12485
|
+
tableName,
|
|
12486
|
+
schema: schema4,
|
|
12487
|
+
data: val.__new
|
|
12488
|
+
});
|
|
12489
|
+
});
|
|
12443
12490
|
return stmts;
|
|
12444
12491
|
};
|
|
12445
12492
|
prepareDropIndexesJson = (tableName, schema4, indexes) => {
|
|
@@ -12488,7 +12535,7 @@ var init_jsonStatements = __esm({
|
|
|
12488
12535
|
tableName,
|
|
12489
12536
|
data: it,
|
|
12490
12537
|
schema: schema4,
|
|
12491
|
-
constraintName: json2.tables[`${schema4}.${tableName}`].compositePrimaryKeys[unsquashed.name].name
|
|
12538
|
+
constraintName: json2.tables[`${schema4 || "public"}.${tableName}`].compositePrimaryKeys[unsquashed.name].name
|
|
12492
12539
|
};
|
|
12493
12540
|
});
|
|
12494
12541
|
};
|
|
@@ -12511,8 +12558,8 @@ var init_jsonStatements = __esm({
|
|
|
12511
12558
|
old: it.__old,
|
|
12512
12559
|
new: it.__new,
|
|
12513
12560
|
schema: schema4,
|
|
12514
|
-
oldConstraintName: json1.tables[`${schema4}.${tableName}`].compositePrimaryKeys[PgSquasher.unsquashPK(it.__old).name].name,
|
|
12515
|
-
newConstraintName: json2.tables[`${schema4}.${tableName}`].compositePrimaryKeys[PgSquasher.unsquashPK(it.__new).name].name
|
|
12561
|
+
oldConstraintName: json1.tables[`${schema4 || "public"}.${tableName}`].compositePrimaryKeys[PgSquasher.unsquashPK(it.__old).name].name,
|
|
12562
|
+
newConstraintName: json2.tables[`${schema4 || "public"}.${tableName}`].compositePrimaryKeys[PgSquasher.unsquashPK(it.__new).name].name
|
|
12516
12563
|
};
|
|
12517
12564
|
});
|
|
12518
12565
|
};
|
|
@@ -12793,7 +12840,7 @@ var init_snapshotsDiffer = __esm({
|
|
|
12793
12840
|
for (let ren of renamedTables) {
|
|
12794
12841
|
if (table4.name === ren.from.name && table4.schema === ren.from.schema) {
|
|
12795
12842
|
return {
|
|
12796
|
-
key: `${ren.to.schema}.${ren.to.name}`,
|
|
12843
|
+
key: `${ren.to.schema || "public"}.${ren.to.name}`,
|
|
12797
12844
|
name: ren.to.name,
|
|
12798
12845
|
schema: ren.to.schema
|
|
12799
12846
|
};
|
|
@@ -14165,8 +14212,7 @@ var init_sqlgenerator = __esm({
|
|
|
14165
14212
|
convert(st) {
|
|
14166
14213
|
const { tableName, columns, schema: schema4, compositePKs, uniqueConstraints } = st;
|
|
14167
14214
|
let statement = "";
|
|
14168
|
-
|
|
14169
|
-
statement += `CREATE TABLE ${tName} (
|
|
14215
|
+
statement += `CREATE TABLE \`${tableName}\` (
|
|
14170
14216
|
`;
|
|
14171
14217
|
for (let i = 0; i < columns.length; i++) {
|
|
14172
14218
|
const column4 = columns[i];
|
|
@@ -14286,8 +14332,7 @@ var init_sqlgenerator = __esm({
|
|
|
14286
14332
|
}
|
|
14287
14333
|
convert(statement) {
|
|
14288
14334
|
const unsquashed = MySqlSquasher.unsquashUnique(statement.data);
|
|
14289
|
-
|
|
14290
|
-
return `ALTER TABLE ${tableNameWithSchema} ADD CONSTRAINT \`${unsquashed.name}\` UNIQUE(\`${unsquashed.columns.join("`,`")}\`);`;
|
|
14335
|
+
return `ALTER TABLE \`${statement.tableName}\` ADD CONSTRAINT \`${unsquashed.name}\` UNIQUE(\`${unsquashed.columns.join("`,`")}\`);`;
|
|
14291
14336
|
}
|
|
14292
14337
|
};
|
|
14293
14338
|
MySQLAlterTableDropUniqueConstraintConvertor = class extends Convertor {
|
|
@@ -14296,8 +14341,7 @@ var init_sqlgenerator = __esm({
|
|
|
14296
14341
|
}
|
|
14297
14342
|
convert(statement) {
|
|
14298
14343
|
const unsquashed = MySqlSquasher.unsquashUnique(statement.data);
|
|
14299
|
-
|
|
14300
|
-
return `ALTER TABLE ${tableNameWithSchema} DROP INDEX \`${unsquashed.name}\`;`;
|
|
14344
|
+
return `ALTER TABLE \`${statement.tableName}\` DROP INDEX \`${unsquashed.name}\`;`;
|
|
14301
14345
|
}
|
|
14302
14346
|
};
|
|
14303
14347
|
SQLiteAlterTableAddUniqueConstraintConvertor = class extends Convertor {
|
|
@@ -14412,10 +14456,8 @@ var init_sqlgenerator = __esm({
|
|
|
14412
14456
|
return statement.type === "rename_table" && dialect7 === "mysql";
|
|
14413
14457
|
}
|
|
14414
14458
|
convert(statement) {
|
|
14415
|
-
const { tableNameFrom, tableNameTo
|
|
14416
|
-
|
|
14417
|
-
const to = fromSchema ? `\`${fromSchema}\`.\`${tableNameTo}\`` : `\`${tableNameTo}\``;
|
|
14418
|
-
return `RENAME TABLE ${from} TO ${to};`;
|
|
14459
|
+
const { tableNameFrom, tableNameTo } = statement;
|
|
14460
|
+
return `RENAME TABLE \`${tableNameFrom}\` TO \`${tableNameTo}\`;`;
|
|
14419
14461
|
}
|
|
14420
14462
|
};
|
|
14421
14463
|
PgAlterTableRenameColumnConvertor = class extends Convertor {
|
|
@@ -15223,9 +15265,8 @@ ${BREAKPOINT}ALTER TABLE ${tableNameWithSchema} ADD CONSTRAINT ${statement.newCo
|
|
|
15223
15265
|
return statement.type === "drop_index" && dialect7 === "mysql";
|
|
15224
15266
|
}
|
|
15225
15267
|
convert(statement) {
|
|
15226
|
-
const tableName = typeof statement.schema === "undefined" ? `\`${statement.tableName}\`` : `\`${statement.schema}\`.\`${statement.tableName}\``;
|
|
15227
15268
|
const { name: name2 } = MySqlSquasher.unsquashIdx(statement.data);
|
|
15228
|
-
return `DROP INDEX \`${name2}\` ON
|
|
15269
|
+
return `DROP INDEX \`${name2}\` ON \`${statement.tableName}\`;`;
|
|
15229
15270
|
}
|
|
15230
15271
|
};
|
|
15231
15272
|
convertors = [];
|
|
@@ -18880,12 +18921,24 @@ The unique constraint ${source_default.underline.blue(
|
|
|
18880
18921
|
`SELECT
|
|
18881
18922
|
m.name as "tableName", p.name as "columnName", p.type as "columnType", p."notnull" as "notNull", p.dflt_value as "defaultValue", p.pk as pk
|
|
18882
18923
|
FROM sqlite_master AS m JOIN pragma_table_info(m.name) AS p
|
|
18883
|
-
WHERE m.type = 'table'
|
|
18924
|
+
WHERE m.type = 'table'
|
|
18925
|
+
and m.tbl_name != 'sqlite_sequence'
|
|
18926
|
+
and m.tbl_name != 'sqlite_stat1'
|
|
18927
|
+
and m.tbl_name != '_litestream_seq'
|
|
18928
|
+
and m.tbl_name != '_litestream_lock'
|
|
18929
|
+
and m.tbl_name != 'libsql_wasm_func_table'
|
|
18930
|
+
and m.tbl_name != '__drizzle_migrations'
|
|
18931
|
+
and m.tbl_name != '_cf_KV';
|
|
18884
18932
|
`
|
|
18885
18933
|
);
|
|
18886
18934
|
const tablesWithSeq = [];
|
|
18887
18935
|
const seq = await db.query(
|
|
18888
|
-
`SELECT * FROM sqlite_master WHERE name != 'sqlite_sequence'
|
|
18936
|
+
`SELECT * FROM sqlite_master WHERE name != 'sqlite_sequence'
|
|
18937
|
+
and name != 'sqlite_stat1'
|
|
18938
|
+
and name != '_litestream_seq'
|
|
18939
|
+
and name != '_litestream_lock'
|
|
18940
|
+
and tbl_name != '_cf_KV'
|
|
18941
|
+
and sql GLOB '*[ *' || CHAR(9) || CHAR(10) || CHAR(13) || ']AUTOINCREMENT[^'']*';`
|
|
18889
18942
|
);
|
|
18890
18943
|
for (const s of seq) {
|
|
18891
18944
|
tablesWithSeq.push(s.name);
|
|
@@ -18970,7 +19023,8 @@ The unique constraint ${source_default.underline.blue(
|
|
|
18970
19023
|
try {
|
|
18971
19024
|
const fks = await db.query(
|
|
18972
19025
|
`SELECT m.name as "tableFrom", f.id as "id", f."table" as "tableTo", f."from", f."to", f."on_update" as "onUpdate", f."on_delete" as "onDelete", f.seq as "seq"
|
|
18973
|
-
FROM sqlite_master m, pragma_foreign_key_list(m.name) as f
|
|
19026
|
+
FROM sqlite_master m, pragma_foreign_key_list(m.name) as f
|
|
19027
|
+
where m.tbl_name != '_cf_KV';`
|
|
18974
19028
|
);
|
|
18975
19029
|
const fkByTableName = {};
|
|
18976
19030
|
for (const fkRow of fks) {
|
|
@@ -19029,7 +19083,9 @@ FROM sqlite_master AS m,
|
|
|
19029
19083
|
pragma_index_list(m.name) AS il,
|
|
19030
19084
|
pragma_index_info(il.name) AS ii
|
|
19031
19085
|
WHERE
|
|
19032
|
-
m.type = 'table'
|
|
19086
|
+
m.type = 'table'
|
|
19087
|
+
and il.name NOT LIKE 'sqlite_autoindex_%'
|
|
19088
|
+
and m.tbl_name != '_cf_KV';`
|
|
19033
19089
|
);
|
|
19034
19090
|
for (const idxRow of idxs) {
|
|
19035
19091
|
const tableName = idxRow.tableName;
|
|
@@ -23938,6 +23994,7 @@ var mysqlIntrospect_exports = {};
|
|
|
23938
23994
|
__export(mysqlIntrospect_exports, {
|
|
23939
23995
|
mysqlPushIntrospect: () => mysqlPushIntrospect
|
|
23940
23996
|
});
|
|
23997
|
+
import { renderWithTask as renderWithTask3 } from "hanji";
|
|
23941
23998
|
var mysqlPushIntrospect;
|
|
23942
23999
|
var init_mysqlIntrospect = __esm({
|
|
23943
24000
|
"src/cli/commands/mysqlIntrospect.ts"() {
|
|
@@ -23945,6 +24002,7 @@ var init_mysqlIntrospect = __esm({
|
|
|
23945
24002
|
init_mysqlSerializer();
|
|
23946
24003
|
init_global();
|
|
23947
24004
|
init_mjs();
|
|
24005
|
+
init_views();
|
|
23948
24006
|
mysqlPushIntrospect = async (db, databaseName, filters) => {
|
|
23949
24007
|
const matchers = filters.map((it) => {
|
|
23950
24008
|
return new Minimatch(it);
|
|
@@ -23959,7 +24017,14 @@ var init_mysqlIntrospect = __esm({
|
|
|
23959
24017
|
}
|
|
23960
24018
|
return false;
|
|
23961
24019
|
};
|
|
23962
|
-
const
|
|
24020
|
+
const progress = new ProgressView(
|
|
24021
|
+
"Pulling schema from database...",
|
|
24022
|
+
"Pulling schema from database..."
|
|
24023
|
+
);
|
|
24024
|
+
const res = await renderWithTask3(
|
|
24025
|
+
progress,
|
|
24026
|
+
fromDatabase3(db, databaseName, filter2)
|
|
24027
|
+
);
|
|
23963
24028
|
const schema4 = { id: originUUID, prevId: "", ...res };
|
|
23964
24029
|
const { internal, ...schemaWithoutInternals } = schema4;
|
|
23965
24030
|
return { schema: schemaWithoutInternals };
|
|
@@ -23980,6 +24045,8 @@ import { randomUUID } from "crypto";
|
|
|
23980
24045
|
init_pgSerializer();
|
|
23981
24046
|
init_global();
|
|
23982
24047
|
init_mjs();
|
|
24048
|
+
init_views();
|
|
24049
|
+
import { renderWithTask } from "hanji";
|
|
23983
24050
|
var pgPushIntrospect = async (db, filters, schemaFilters) => {
|
|
23984
24051
|
const matchers = filters.map((it) => {
|
|
23985
24052
|
return new Minimatch(it);
|
|
@@ -23994,7 +24061,14 @@ var pgPushIntrospect = async (db, filters, schemaFilters) => {
|
|
|
23994
24061
|
}
|
|
23995
24062
|
return false;
|
|
23996
24063
|
};
|
|
23997
|
-
const
|
|
24064
|
+
const progress = new ProgressView(
|
|
24065
|
+
"Pulling schema from database...",
|
|
24066
|
+
"Pulling schema from database..."
|
|
24067
|
+
);
|
|
24068
|
+
const res = await renderWithTask(
|
|
24069
|
+
progress,
|
|
24070
|
+
fromDatabase(db, filter2, schemaFilters)
|
|
24071
|
+
);
|
|
23998
24072
|
const schema4 = { id: originUUID, prevId: "", ...res };
|
|
23999
24073
|
const { internal, ...schemaWithoutInternals } = schema4;
|
|
24000
24074
|
return { schema: schemaWithoutInternals };
|
|
@@ -24412,7 +24486,7 @@ Array.prototype.random = function() {
|
|
|
24412
24486
|
|
|
24413
24487
|
// src/cli/commands/sqliteIntrospect.ts
|
|
24414
24488
|
init_mjs();
|
|
24415
|
-
import { renderWithTask } from "hanji";
|
|
24489
|
+
import { renderWithTask as renderWithTask2 } from "hanji";
|
|
24416
24490
|
var sqlitePushIntrospect = async (db, filters) => {
|
|
24417
24491
|
const matchers = filters.map((it) => {
|
|
24418
24492
|
return new Minimatch(it);
|
|
@@ -24427,7 +24501,14 @@ var sqlitePushIntrospect = async (db, filters) => {
|
|
|
24427
24501
|
}
|
|
24428
24502
|
return false;
|
|
24429
24503
|
};
|
|
24430
|
-
const
|
|
24504
|
+
const progress = new ProgressView(
|
|
24505
|
+
"Pulling schema from database...",
|
|
24506
|
+
"Pulling schema from database..."
|
|
24507
|
+
);
|
|
24508
|
+
const res = await renderWithTask2(
|
|
24509
|
+
progress,
|
|
24510
|
+
fromDatabase2(db, filter2)
|
|
24511
|
+
);
|
|
24431
24512
|
const schema4 = { id: originUUID, prevId: "", ...res };
|
|
24432
24513
|
return { schema: schema4 };
|
|
24433
24514
|
};
|
|
@@ -24544,7 +24625,7 @@ var logSuggestionsAndReturn = async (connection, statements, json1, json2, meta)
|
|
|
24544
24625
|
).find(
|
|
24545
24626
|
(c) => SQLiteSquasher.unsquashIdx(c).columns.includes(statement.columnName)
|
|
24546
24627
|
);
|
|
24547
|
-
const columnIsPk =
|
|
24628
|
+
const columnIsPk = json2.tables[newTableName].columns[statement.columnName].primaryKey;
|
|
24548
24629
|
const columnIsPartOfFk = Object.values(
|
|
24549
24630
|
json1.tables[newTableName].foreignKeys
|
|
24550
24631
|
).find(
|
|
@@ -24628,48 +24709,52 @@ var logSuggestionsAndReturn = async (connection, statements, json1, json2, meta)
|
|
|
24628
24709
|
}
|
|
24629
24710
|
}
|
|
24630
24711
|
} else if (statement.type === "alter_table_alter_column_set_type" || statement.type === "alter_table_alter_column_set_default" || statement.type === "alter_table_alter_column_drop_default" || statement.type === "alter_table_alter_column_set_notnull" || statement.type === "alter_table_alter_column_drop_notnull" || statement.type === "alter_table_alter_column_drop_autoincrement" || statement.type === "alter_table_alter_column_set_autoincrement" || statement.type === "alter_table_alter_column_drop_pk" || statement.type === "alter_table_alter_column_set_pk") {
|
|
24631
|
-
|
|
24632
|
-
|
|
24633
|
-
|
|
24634
|
-
|
|
24635
|
-
|
|
24636
|
-
const count2 = Number(res[0].count);
|
|
24637
|
-
if (count2 > 0) {
|
|
24638
|
-
infoToPrint.push(
|
|
24639
|
-
`\xB7 You're about to add not-null constraint to ${source_default.underline(
|
|
24640
|
-
statement.columnName
|
|
24641
|
-
)} column without default value, which contains ${count2} items`
|
|
24712
|
+
if (!(statement.type === "alter_table_alter_column_set_notnull" && statement.columnPk)) {
|
|
24713
|
+
const newTableName = getOldTableName(statement.tableName, meta);
|
|
24714
|
+
if (statement.type === "alter_table_alter_column_set_notnull" && typeof statement.columnDefault === "undefined") {
|
|
24715
|
+
const res = await connection.query(
|
|
24716
|
+
`select count(*) as count from \`${newTableName}\``
|
|
24642
24717
|
);
|
|
24643
|
-
|
|
24644
|
-
|
|
24645
|
-
|
|
24646
|
-
|
|
24647
|
-
|
|
24648
|
-
|
|
24649
|
-
|
|
24650
|
-
|
|
24651
|
-
|
|
24652
|
-
|
|
24718
|
+
const count2 = Number(res[0].count);
|
|
24719
|
+
if (count2 > 0) {
|
|
24720
|
+
infoToPrint.push(
|
|
24721
|
+
`\xB7 You're about to add not-null constraint to ${source_default.underline(
|
|
24722
|
+
statement.columnName
|
|
24723
|
+
)} column without default value, which contains ${count2} items`
|
|
24724
|
+
);
|
|
24725
|
+
tablesToTruncate.push(newTableName);
|
|
24726
|
+
shouldAskForApprove = true;
|
|
24727
|
+
}
|
|
24653
24728
|
tablesContext[newTableName] = _moveDataStatements(
|
|
24654
24729
|
statement.tableName,
|
|
24655
|
-
json2
|
|
24730
|
+
json2,
|
|
24731
|
+
true
|
|
24656
24732
|
);
|
|
24733
|
+
} else {
|
|
24734
|
+
if (typeof tablesContext[newTableName] === "undefined") {
|
|
24735
|
+
tablesContext[newTableName] = _moveDataStatements(
|
|
24736
|
+
statement.tableName,
|
|
24737
|
+
json2
|
|
24738
|
+
);
|
|
24739
|
+
}
|
|
24657
24740
|
}
|
|
24658
|
-
|
|
24659
|
-
|
|
24660
|
-
|
|
24661
|
-
|
|
24662
|
-
|
|
24663
|
-
|
|
24664
|
-
|
|
24665
|
-
|
|
24666
|
-
|
|
24667
|
-
|
|
24668
|
-
|
|
24669
|
-
|
|
24670
|
-
|
|
24671
|
-
|
|
24672
|
-
tablesContext[table4]
|
|
24741
|
+
const tablesReferncingCurrent = [];
|
|
24742
|
+
for (const table4 of Object.values(json1.tables)) {
|
|
24743
|
+
const tablesRefs = Object.values(json1.tables[table4.name].foreignKeys).filter(
|
|
24744
|
+
(t) => SQLiteSquasher.unsquashFK(t).tableTo === newTableName
|
|
24745
|
+
).map((t) => {
|
|
24746
|
+
return getNewTableName(
|
|
24747
|
+
SQLiteSquasher.unsquashFK(t).tableFrom,
|
|
24748
|
+
meta
|
|
24749
|
+
);
|
|
24750
|
+
});
|
|
24751
|
+
tablesReferncingCurrent.push(...tablesRefs);
|
|
24752
|
+
}
|
|
24753
|
+
const uniqueTableRefs = [...new Set(tablesReferncingCurrent)];
|
|
24754
|
+
for (const table4 of uniqueTableRefs) {
|
|
24755
|
+
if (typeof tablesContext[table4] === "undefined") {
|
|
24756
|
+
tablesContext[table4] = [..._moveDataStatements(table4, json2)];
|
|
24757
|
+
}
|
|
24673
24758
|
}
|
|
24674
24759
|
}
|
|
24675
24760
|
} else if (statement.type === "create_reference" || statement.type === "delete_reference" || statement.type === "alter_reference") {
|