drizzle-kit 0.22.0-3b0ba5f → 0.22.0-ed86dfa
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 +17549 -10966
- package/index.d.mts +9 -1
- package/index.d.ts +9 -1
- package/package.json +2 -1
- package/payload.js +168 -84
- package/payload.mjs +153 -69
- package/utils-studio.js +591 -12
- package/utils-studio.mjs +591 -12
- package/utils.js +0 -1
- package/utils.mjs +0 -1
package/index.d.mts
CHANGED
|
@@ -2,7 +2,7 @@ import { SslOptions } from 'mysql2';
|
|
|
2
2
|
import * as zod from 'zod';
|
|
3
3
|
import { TypeOf } from 'zod';
|
|
4
4
|
|
|
5
|
-
declare const driver: zod.ZodUnion<[zod.ZodUnion<[zod.ZodLiteral<"better-sqlite">, zod.ZodLiteral<"turso">, zod.ZodLiteral<"libsql">, zod.ZodLiteral<"d1">, zod.ZodLiteral<"expo">]>, zod.ZodLiteral<"aws-data-api">, zod.ZodLiteral<"mysql2">]>;
|
|
5
|
+
declare const driver: zod.ZodUnion<[zod.ZodUnion<[zod.ZodLiteral<"better-sqlite">, zod.ZodLiteral<"turso">, zod.ZodLiteral<"libsql">, zod.ZodLiteral<"d1">, zod.ZodLiteral<"d1-http">, zod.ZodLiteral<"expo">]>, zod.ZodLiteral<"aws-data-api">, zod.ZodLiteral<"mysql2">]>;
|
|
6
6
|
type Driver = TypeOf<typeof driver>;
|
|
7
7
|
|
|
8
8
|
declare const dialect: zod.ZodEnum<["postgresql", "mysql", "sqlite"]>;
|
|
@@ -169,6 +169,14 @@ type Config = {
|
|
|
169
169
|
wranglerConfigPath: string;
|
|
170
170
|
dbName: string;
|
|
171
171
|
};
|
|
172
|
+
} | {
|
|
173
|
+
dialect: Verify<Dialect, "sqlite">;
|
|
174
|
+
driver: Verify<Driver, "d1-http">;
|
|
175
|
+
dbCredentials: {
|
|
176
|
+
accountId: string;
|
|
177
|
+
databaseId: string;
|
|
178
|
+
token: string;
|
|
179
|
+
};
|
|
172
180
|
} | {
|
|
173
181
|
dialect: Verify<Dialect, "sqlite">;
|
|
174
182
|
driver: Verify<Driver, "expo">;
|
package/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { SslOptions } from 'mysql2';
|
|
|
2
2
|
import * as zod from 'zod';
|
|
3
3
|
import { TypeOf } from 'zod';
|
|
4
4
|
|
|
5
|
-
declare const driver: zod.ZodUnion<[zod.ZodUnion<[zod.ZodLiteral<"better-sqlite">, zod.ZodLiteral<"turso">, zod.ZodLiteral<"libsql">, zod.ZodLiteral<"d1">, zod.ZodLiteral<"expo">]>, zod.ZodLiteral<"aws-data-api">, zod.ZodLiteral<"mysql2">]>;
|
|
5
|
+
declare const driver: zod.ZodUnion<[zod.ZodUnion<[zod.ZodLiteral<"better-sqlite">, zod.ZodLiteral<"turso">, zod.ZodLiteral<"libsql">, zod.ZodLiteral<"d1">, zod.ZodLiteral<"d1-http">, zod.ZodLiteral<"expo">]>, zod.ZodLiteral<"aws-data-api">, zod.ZodLiteral<"mysql2">]>;
|
|
6
6
|
type Driver = TypeOf<typeof driver>;
|
|
7
7
|
|
|
8
8
|
declare const dialect: zod.ZodEnum<["postgresql", "mysql", "sqlite"]>;
|
|
@@ -169,6 +169,14 @@ type Config = {
|
|
|
169
169
|
wranglerConfigPath: string;
|
|
170
170
|
dbName: string;
|
|
171
171
|
};
|
|
172
|
+
} | {
|
|
173
|
+
dialect: Verify<Dialect, "sqlite">;
|
|
174
|
+
driver: Verify<Driver, "d1-http">;
|
|
175
|
+
dbCredentials: {
|
|
176
|
+
accountId: string;
|
|
177
|
+
databaseId: string;
|
|
178
|
+
token: string;
|
|
179
|
+
};
|
|
172
180
|
} | {
|
|
173
181
|
dialect: Verify<Dialect, "sqlite">;
|
|
174
182
|
driver: Verify<Driver, "expo">;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-kit",
|
|
3
|
-
"version": "0.22.0-
|
|
3
|
+
"version": "0.22.0-ed86dfa",
|
|
4
4
|
"repository": "https://github.com/drizzle-team/drizzle-kit-mirror",
|
|
5
5
|
"author": "Drizzle Team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"hono": "^4.1.5",
|
|
71
71
|
"minimatch": "^7.4.3",
|
|
72
72
|
"mysql2": "2.3.3",
|
|
73
|
+
"node-fetch": "^3.3.2",
|
|
73
74
|
"pg": "^8.11.3",
|
|
74
75
|
"pluralize": "^8.0.0",
|
|
75
76
|
"postgres": "^3.4.4",
|
package/payload.js
CHANGED
|
@@ -8495,7 +8495,7 @@ var init_utils4 = __esm({
|
|
|
8495
8495
|
});
|
|
8496
8496
|
|
|
8497
8497
|
// src/cli/views.ts
|
|
8498
|
-
var import_hanji, error, isRenamePromptItem, ResolveColumnSelect, tableKey, ResolveSelect, ResolveSchemasSelect;
|
|
8498
|
+
var import_hanji, error, isRenamePromptItem, ResolveColumnSelect, tableKey, ResolveSelect, ResolveSchemasSelect, Spinner, ProgressView;
|
|
8499
8499
|
var init_views = __esm({
|
|
8500
8500
|
"src/cli/views.ts"() {
|
|
8501
8501
|
"use strict";
|
|
@@ -8648,6 +8648,42 @@ Is ${source_default.bold.blue(
|
|
|
8648
8648
|
return this.state.items[this.state.selectedIdx];
|
|
8649
8649
|
}
|
|
8650
8650
|
};
|
|
8651
|
+
Spinner = class {
|
|
8652
|
+
constructor(frames) {
|
|
8653
|
+
this.frames = frames;
|
|
8654
|
+
this.offset = 0;
|
|
8655
|
+
this.tick = () => {
|
|
8656
|
+
this.iterator();
|
|
8657
|
+
};
|
|
8658
|
+
this.value = () => {
|
|
8659
|
+
return this.frames[this.offset];
|
|
8660
|
+
};
|
|
8661
|
+
this.iterator = () => {
|
|
8662
|
+
this.offset += 1;
|
|
8663
|
+
this.offset %= frames.length - 1;
|
|
8664
|
+
};
|
|
8665
|
+
}
|
|
8666
|
+
};
|
|
8667
|
+
ProgressView = class extends import_hanji.TaskView {
|
|
8668
|
+
constructor(progressText, successText) {
|
|
8669
|
+
super();
|
|
8670
|
+
this.progressText = progressText;
|
|
8671
|
+
this.successText = successText;
|
|
8672
|
+
this.spinner = new Spinner("\u28F7\u28EF\u28DF\u287F\u28BF\u28FB\u28FD\u28FE".split(""));
|
|
8673
|
+
this.timeout = setInterval(() => {
|
|
8674
|
+
this.spinner.tick();
|
|
8675
|
+
this.requestLayout();
|
|
8676
|
+
}, 128);
|
|
8677
|
+
this.on("detach", () => clearInterval(this.timeout));
|
|
8678
|
+
}
|
|
8679
|
+
render(status) {
|
|
8680
|
+
if (status === "pending") {
|
|
8681
|
+
const spin = this.spinner.value();
|
|
8682
|
+
return `[${spin}] ${this.progressText}`;
|
|
8683
|
+
}
|
|
8684
|
+
return `[${source_default.green("\u2713")}] ${this.successText}`;
|
|
8685
|
+
}
|
|
8686
|
+
};
|
|
8651
8687
|
}
|
|
8652
8688
|
});
|
|
8653
8689
|
|
|
@@ -8768,6 +8804,12 @@ var init_sqlite = __esm({
|
|
|
8768
8804
|
url: (0, import_zod6.string)(),
|
|
8769
8805
|
authToken: (0, import_zod6.string)()
|
|
8770
8806
|
}),
|
|
8807
|
+
(0, import_zod6.object)({
|
|
8808
|
+
driver: (0, import_zod6.literal)("d1-http"),
|
|
8809
|
+
accountId: (0, import_zod6.string)(),
|
|
8810
|
+
databaseId: (0, import_zod6.string)(),
|
|
8811
|
+
token: (0, import_zod6.string)()
|
|
8812
|
+
}),
|
|
8771
8813
|
(0, import_zod6.object)({
|
|
8772
8814
|
url: (0, import_zod6.string)()
|
|
8773
8815
|
})
|
|
@@ -8811,6 +8853,7 @@ var init_common2 = __esm({
|
|
|
8811
8853
|
(0, import_zod8.literal)("turso"),
|
|
8812
8854
|
(0, import_zod8.literal)("libsql"),
|
|
8813
8855
|
(0, import_zod8.literal)("d1"),
|
|
8856
|
+
(0, import_zod8.literal)("d1-http"),
|
|
8814
8857
|
(0, import_zod8.literal)("expo")
|
|
8815
8858
|
]);
|
|
8816
8859
|
postgresDriver = (0, import_zod8.literal)("aws-data-api");
|
|
@@ -9797,6 +9840,7 @@ ${withStyle.errorWarning(
|
|
|
9797
9840
|
"time without time zone": "::time without time zone",
|
|
9798
9841
|
// "timestamp with time zone": "::timestamp with time zone",
|
|
9799
9842
|
"timestamp without time zone": "::timestamp without time zone",
|
|
9843
|
+
"timestamp(": "::timestamp without time zone",
|
|
9800
9844
|
// date: "::date",
|
|
9801
9845
|
// interval: "::interval",
|
|
9802
9846
|
// character: "::bpchar",
|
|
@@ -9809,15 +9853,15 @@ ${withStyle.errorWarning(
|
|
|
9809
9853
|
"character(": "::bpchar"
|
|
9810
9854
|
};
|
|
9811
9855
|
defaultForColumn = (column4) => {
|
|
9856
|
+
if (column4.column_default === null) {
|
|
9857
|
+
return void 0;
|
|
9858
|
+
}
|
|
9812
9859
|
if (column4.data_type === "serial" || column4.data_type === "smallserial" || column4.data_type === "bigserial") {
|
|
9813
9860
|
return void 0;
|
|
9814
9861
|
}
|
|
9815
9862
|
const hasDifferentDefaultCast = Object.keys(columnToDefault).find(
|
|
9816
9863
|
(it) => column4.data_type.startsWith(it)
|
|
9817
9864
|
);
|
|
9818
|
-
if (column4.column_default === null) {
|
|
9819
|
-
return void 0;
|
|
9820
|
-
}
|
|
9821
9865
|
const columnDefaultAsString = column4.column_default.toString();
|
|
9822
9866
|
if (columnDefaultAsString.endsWith(
|
|
9823
9867
|
hasDifferentDefaultCast ? columnToDefault[hasDifferentDefaultCast] : column4.data_type
|
|
@@ -11299,8 +11343,7 @@ var init_jsonDiffer = __esm({
|
|
|
11299
11343
|
};
|
|
11300
11344
|
findAlternationsInTable = (table4) => {
|
|
11301
11345
|
const columns = table4.columns ?? {};
|
|
11302
|
-
const
|
|
11303
|
-
const altered = Object.keys(columns).filter((it) => !(it.includes("__deleted") || it.includes("__added") || isSemanticallyEqual(it))).map((it) => {
|
|
11346
|
+
const altered = Object.keys(columns).filter((it) => !(it.includes("__deleted") || it.includes("__added"))).map((it) => {
|
|
11304
11347
|
return { name: it, ...columns[it] };
|
|
11305
11348
|
});
|
|
11306
11349
|
const deletedIndexes = Object.fromEntries(
|
|
@@ -11402,6 +11445,9 @@ var init_jsonDiffer = __esm({
|
|
|
11402
11445
|
return it;
|
|
11403
11446
|
}).map((it) => {
|
|
11404
11447
|
if ("type" in it) {
|
|
11448
|
+
if (it.type.__old.replace(" (", "(") === it.type.__new.replace(" (", "(")) {
|
|
11449
|
+
return void 0;
|
|
11450
|
+
}
|
|
11405
11451
|
return {
|
|
11406
11452
|
...it,
|
|
11407
11453
|
type: { type: "changed", old: it.type.__old, new: it.type.__new }
|
|
@@ -11564,7 +11610,7 @@ var init_jsonDiffer = __esm({
|
|
|
11564
11610
|
};
|
|
11565
11611
|
}
|
|
11566
11612
|
return it;
|
|
11567
|
-
});
|
|
11613
|
+
}).filter(Boolean);
|
|
11568
11614
|
return result[0];
|
|
11569
11615
|
};
|
|
11570
11616
|
}
|
|
@@ -12448,7 +12494,7 @@ var init_jsonStatements = __esm({
|
|
|
12448
12494
|
tableName,
|
|
12449
12495
|
data: it,
|
|
12450
12496
|
schema: schema4,
|
|
12451
|
-
constraintName: json2.tables[`${schema4}.${tableName}`].compositePrimaryKeys[unsquashed.name].name
|
|
12497
|
+
constraintName: json2.tables[`${schema4 || "public"}.${tableName}`].compositePrimaryKeys[unsquashed.name].name
|
|
12452
12498
|
};
|
|
12453
12499
|
});
|
|
12454
12500
|
};
|
|
@@ -12471,8 +12517,8 @@ var init_jsonStatements = __esm({
|
|
|
12471
12517
|
old: it.__old,
|
|
12472
12518
|
new: it.__new,
|
|
12473
12519
|
schema: schema4,
|
|
12474
|
-
oldConstraintName: json1.tables[`${schema4}.${tableName}`].compositePrimaryKeys[PgSquasher.unsquashPK(it.__old).name].name,
|
|
12475
|
-
newConstraintName: json2.tables[`${schema4}.${tableName}`].compositePrimaryKeys[PgSquasher.unsquashPK(it.__new).name].name
|
|
12520
|
+
oldConstraintName: json1.tables[`${schema4 || "public"}.${tableName}`].compositePrimaryKeys[PgSquasher.unsquashPK(it.__old).name].name,
|
|
12521
|
+
newConstraintName: json2.tables[`${schema4 || "public"}.${tableName}`].compositePrimaryKeys[PgSquasher.unsquashPK(it.__new).name].name
|
|
12476
12522
|
};
|
|
12477
12523
|
});
|
|
12478
12524
|
};
|
|
@@ -12742,7 +12788,7 @@ var init_snapshotsDiffer = __esm({
|
|
|
12742
12788
|
for (let ren of renamedTables) {
|
|
12743
12789
|
if (table4.name === ren.from.name && table4.schema === ren.from.schema) {
|
|
12744
12790
|
return {
|
|
12745
|
-
key: `${ren.to.schema}.${ren.to.name}`,
|
|
12791
|
+
key: `${ren.to.schema || "public"}.${ren.to.name}`,
|
|
12746
12792
|
name: ren.to.name,
|
|
12747
12793
|
schema: ren.to.schema
|
|
12748
12794
|
};
|
|
@@ -13779,13 +13825,13 @@ var init_words = __esm({
|
|
|
13779
13825
|
});
|
|
13780
13826
|
|
|
13781
13827
|
// src/cli/commands/migrate.ts
|
|
13782
|
-
var
|
|
13828
|
+
var import_hanji4, schemasResolver, tablesResolver, enumsResolver, columnsResolver, promptColumnsConflicts, promptNamedWithSchemasConflict, promptSchemasConflict, BREAKPOINT;
|
|
13783
13829
|
var init_migrate = __esm({
|
|
13784
13830
|
"src/cli/commands/migrate.ts"() {
|
|
13785
13831
|
"use strict";
|
|
13786
13832
|
init_migrationPreparator();
|
|
13787
13833
|
init_snapshotsDiffer();
|
|
13788
|
-
|
|
13834
|
+
import_hanji4 = require("hanji");
|
|
13789
13835
|
init_views();
|
|
13790
13836
|
init_source();
|
|
13791
13837
|
init_pgSchema();
|
|
@@ -13869,7 +13915,7 @@ var init_migrate = __esm({
|
|
|
13869
13915
|
return { from: it, to: created };
|
|
13870
13916
|
});
|
|
13871
13917
|
const promptData = [created, ...renames];
|
|
13872
|
-
const { status, data } = await (0,
|
|
13918
|
+
const { status, data } = await (0, import_hanji4.render)(
|
|
13873
13919
|
new ResolveColumnSelect(tableName, created, promptData)
|
|
13874
13920
|
);
|
|
13875
13921
|
if (status === "aborted") {
|
|
@@ -13920,7 +13966,7 @@ var init_migrate = __esm({
|
|
|
13920
13966
|
return { from: it, to: created };
|
|
13921
13967
|
});
|
|
13922
13968
|
const promptData = [created, ...renames];
|
|
13923
|
-
const { status, data } = await (0,
|
|
13969
|
+
const { status, data } = await (0, import_hanji4.render)(
|
|
13924
13970
|
new ResolveSelect(created, promptData, entity)
|
|
13925
13971
|
);
|
|
13926
13972
|
if (status === "aborted") {
|
|
@@ -13975,7 +14021,7 @@ var init_migrate = __esm({
|
|
|
13975
14021
|
return { from: it, to: created };
|
|
13976
14022
|
});
|
|
13977
14023
|
const promptData = [created, ...renames];
|
|
13978
|
-
const { status, data } = await (0,
|
|
14024
|
+
const { status, data } = await (0, import_hanji4.render)(
|
|
13979
14025
|
new ResolveSchemasSelect(created, promptData)
|
|
13980
14026
|
);
|
|
13981
14027
|
if (status === "aborted") {
|
|
@@ -14114,8 +14160,7 @@ var init_sqlgenerator = __esm({
|
|
|
14114
14160
|
convert(st) {
|
|
14115
14161
|
const { tableName, columns, schema: schema4, compositePKs, uniqueConstraints } = st;
|
|
14116
14162
|
let statement = "";
|
|
14117
|
-
|
|
14118
|
-
statement += `CREATE TABLE ${tName} (
|
|
14163
|
+
statement += `CREATE TABLE \`${tableName}\` (
|
|
14119
14164
|
`;
|
|
14120
14165
|
for (let i = 0; i < columns.length; i++) {
|
|
14121
14166
|
const column4 = columns[i];
|
|
@@ -14235,8 +14280,7 @@ var init_sqlgenerator = __esm({
|
|
|
14235
14280
|
}
|
|
14236
14281
|
convert(statement) {
|
|
14237
14282
|
const unsquashed = MySqlSquasher.unsquashUnique(statement.data);
|
|
14238
|
-
|
|
14239
|
-
return `ALTER TABLE ${tableNameWithSchema} ADD CONSTRAINT \`${unsquashed.name}\` UNIQUE(\`${unsquashed.columns.join("`,`")}\`);`;
|
|
14283
|
+
return `ALTER TABLE \`${statement.tableName}\` ADD CONSTRAINT \`${unsquashed.name}\` UNIQUE(\`${unsquashed.columns.join("`,`")}\`);`;
|
|
14240
14284
|
}
|
|
14241
14285
|
};
|
|
14242
14286
|
MySQLAlterTableDropUniqueConstraintConvertor = class extends Convertor {
|
|
@@ -14245,8 +14289,7 @@ var init_sqlgenerator = __esm({
|
|
|
14245
14289
|
}
|
|
14246
14290
|
convert(statement) {
|
|
14247
14291
|
const unsquashed = MySqlSquasher.unsquashUnique(statement.data);
|
|
14248
|
-
|
|
14249
|
-
return `ALTER TABLE ${tableNameWithSchema} DROP INDEX \`${unsquashed.name}\`;`;
|
|
14292
|
+
return `ALTER TABLE \`${statement.tableName}\` DROP INDEX \`${unsquashed.name}\`;`;
|
|
14250
14293
|
}
|
|
14251
14294
|
};
|
|
14252
14295
|
SQLiteAlterTableAddUniqueConstraintConvertor = class extends Convertor {
|
|
@@ -14361,10 +14404,8 @@ var init_sqlgenerator = __esm({
|
|
|
14361
14404
|
return statement.type === "rename_table" && dialect7 === "mysql";
|
|
14362
14405
|
}
|
|
14363
14406
|
convert(statement) {
|
|
14364
|
-
const { tableNameFrom, tableNameTo
|
|
14365
|
-
|
|
14366
|
-
const to = fromSchema ? `\`${fromSchema}\`.\`${tableNameTo}\`` : `\`${tableNameTo}\``;
|
|
14367
|
-
return `RENAME TABLE ${from} TO ${to};`;
|
|
14407
|
+
const { tableNameFrom, tableNameTo } = statement;
|
|
14408
|
+
return `RENAME TABLE \`${tableNameFrom}\` TO \`${tableNameTo}\`;`;
|
|
14368
14409
|
}
|
|
14369
14410
|
};
|
|
14370
14411
|
PgAlterTableRenameColumnConvertor = class extends Convertor {
|
|
@@ -15172,9 +15213,8 @@ ${BREAKPOINT}ALTER TABLE ${tableNameWithSchema} ADD CONSTRAINT ${statement.newCo
|
|
|
15172
15213
|
return statement.type === "drop_index" && dialect7 === "mysql";
|
|
15173
15214
|
}
|
|
15174
15215
|
convert(statement) {
|
|
15175
|
-
const tableName = typeof statement.schema === "undefined" ? `\`${statement.tableName}\`` : `\`${statement.schema}\`.\`${statement.tableName}\``;
|
|
15176
15216
|
const { name: name2 } = MySqlSquasher.unsquashIdx(statement.data);
|
|
15177
|
-
return `DROP INDEX \`${name2}\` ON
|
|
15217
|
+
return `DROP INDEX \`${name2}\` ON \`${statement.tableName}\`;`;
|
|
15178
15218
|
}
|
|
15179
15219
|
};
|
|
15180
15220
|
convertors = [];
|
|
@@ -15291,18 +15331,18 @@ drop type __venum;
|
|
|
15291
15331
|
});
|
|
15292
15332
|
|
|
15293
15333
|
// src/cli/selector-ui.ts
|
|
15294
|
-
var
|
|
15334
|
+
var import_hanji5, Select;
|
|
15295
15335
|
var init_selector_ui = __esm({
|
|
15296
15336
|
"src/cli/selector-ui.ts"() {
|
|
15297
15337
|
"use strict";
|
|
15298
15338
|
init_source();
|
|
15299
|
-
|
|
15300
|
-
Select = class extends
|
|
15339
|
+
import_hanji5 = require("hanji");
|
|
15340
|
+
Select = class extends import_hanji5.Prompt {
|
|
15301
15341
|
constructor(items) {
|
|
15302
15342
|
super();
|
|
15303
15343
|
this.on("attach", (terminal) => terminal.toggleCursor("hide"));
|
|
15304
15344
|
this.on("detach", (terminal) => terminal.toggleCursor("show"));
|
|
15305
|
-
this.data = new
|
|
15345
|
+
this.data = new import_hanji5.SelectState(
|
|
15306
15346
|
items.map((it) => ({ label: it, value: `${it}-value` }))
|
|
15307
15347
|
);
|
|
15308
15348
|
this.data.bind(this);
|
|
@@ -18829,12 +18869,24 @@ The unique constraint ${source_default.underline.blue(
|
|
|
18829
18869
|
`SELECT
|
|
18830
18870
|
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
|
|
18831
18871
|
FROM sqlite_master AS m JOIN pragma_table_info(m.name) AS p
|
|
18832
|
-
WHERE m.type = 'table'
|
|
18872
|
+
WHERE m.type = 'table'
|
|
18873
|
+
and m.tbl_name != 'sqlite_sequence'
|
|
18874
|
+
and m.tbl_name != 'sqlite_stat1'
|
|
18875
|
+
and m.tbl_name != '_litestream_seq'
|
|
18876
|
+
and m.tbl_name != '_litestream_lock'
|
|
18877
|
+
and m.tbl_name != 'libsql_wasm_func_table'
|
|
18878
|
+
and m.tbl_name != '__drizzle_migrations'
|
|
18879
|
+
and m.tbl_name != '_cf_KV';
|
|
18833
18880
|
`
|
|
18834
18881
|
);
|
|
18835
18882
|
const tablesWithSeq = [];
|
|
18836
18883
|
const seq = await db.query(
|
|
18837
|
-
`SELECT * FROM sqlite_master WHERE name != 'sqlite_sequence'
|
|
18884
|
+
`SELECT * FROM sqlite_master WHERE name != 'sqlite_sequence'
|
|
18885
|
+
and name != 'sqlite_stat1'
|
|
18886
|
+
and name != '_litestream_seq'
|
|
18887
|
+
and name != '_litestream_lock'
|
|
18888
|
+
and tbl_name != '_cf_KV'
|
|
18889
|
+
and sql GLOB '*[ *' || CHAR(9) || CHAR(10) || CHAR(13) || ']AUTOINCREMENT[^'']*';`
|
|
18838
18890
|
);
|
|
18839
18891
|
for (const s of seq) {
|
|
18840
18892
|
tablesWithSeq.push(s.name);
|
|
@@ -18919,7 +18971,8 @@ The unique constraint ${source_default.underline.blue(
|
|
|
18919
18971
|
try {
|
|
18920
18972
|
const fks = await db.query(
|
|
18921
18973
|
`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"
|
|
18922
|
-
FROM sqlite_master m, pragma_foreign_key_list(m.name) as f
|
|
18974
|
+
FROM sqlite_master m, pragma_foreign_key_list(m.name) as f
|
|
18975
|
+
where m.tbl_name != '_cf_KV';`
|
|
18923
18976
|
);
|
|
18924
18977
|
const fkByTableName = {};
|
|
18925
18978
|
for (const fkRow of fks) {
|
|
@@ -18978,7 +19031,9 @@ FROM sqlite_master AS m,
|
|
|
18978
19031
|
pragma_index_list(m.name) AS il,
|
|
18979
19032
|
pragma_index_info(il.name) AS ii
|
|
18980
19033
|
WHERE
|
|
18981
|
-
m.type = 'table'
|
|
19034
|
+
m.type = 'table'
|
|
19035
|
+
and il.name NOT LIKE 'sqlite_autoindex_%'
|
|
19036
|
+
and m.tbl_name != '_cf_KV';`
|
|
18982
19037
|
);
|
|
18983
19038
|
for (const idxRow of idxs) {
|
|
18984
19039
|
const tableName = idxRow.tableName;
|
|
@@ -23636,12 +23691,12 @@ __export(mysqlPushUtils_exports, {
|
|
|
23636
23691
|
filterStatements: () => filterStatements,
|
|
23637
23692
|
logSuggestionsAndReturn: () => logSuggestionsAndReturn2
|
|
23638
23693
|
});
|
|
23639
|
-
var
|
|
23694
|
+
var import_hanji8, filterStatements, logSuggestionsAndReturn2;
|
|
23640
23695
|
var init_mysqlPushUtils = __esm({
|
|
23641
23696
|
"src/cli/commands/mysqlPushUtils.ts"() {
|
|
23642
23697
|
"use strict";
|
|
23643
23698
|
init_source();
|
|
23644
|
-
|
|
23699
|
+
import_hanji8 = require("hanji");
|
|
23645
23700
|
init_mysqlSchema();
|
|
23646
23701
|
init_selector_ui();
|
|
23647
23702
|
init_outputs();
|
|
@@ -23855,7 +23910,7 @@ var init_mysqlPushUtils = __esm({
|
|
|
23855
23910
|
)} table?
|
|
23856
23911
|
`
|
|
23857
23912
|
);
|
|
23858
|
-
const { status, data } = await (0,
|
|
23913
|
+
const { status, data } = await (0, import_hanji8.render)(
|
|
23859
23914
|
new Select([
|
|
23860
23915
|
"No, add the constraint without truncating the table",
|
|
23861
23916
|
`Yes, truncate the table`
|
|
@@ -23887,13 +23942,15 @@ var mysqlIntrospect_exports = {};
|
|
|
23887
23942
|
__export(mysqlIntrospect_exports, {
|
|
23888
23943
|
mysqlPushIntrospect: () => mysqlPushIntrospect
|
|
23889
23944
|
});
|
|
23890
|
-
var mysqlPushIntrospect;
|
|
23945
|
+
var import_hanji9, mysqlPushIntrospect;
|
|
23891
23946
|
var init_mysqlIntrospect = __esm({
|
|
23892
23947
|
"src/cli/commands/mysqlIntrospect.ts"() {
|
|
23893
23948
|
"use strict";
|
|
23894
23949
|
init_mysqlSerializer();
|
|
23895
23950
|
init_global();
|
|
23896
23951
|
init_mjs();
|
|
23952
|
+
init_views();
|
|
23953
|
+
import_hanji9 = require("hanji");
|
|
23897
23954
|
mysqlPushIntrospect = async (db, databaseName, filters) => {
|
|
23898
23955
|
const matchers = filters.map((it) => {
|
|
23899
23956
|
return new Minimatch(it);
|
|
@@ -23908,7 +23965,14 @@ var init_mysqlIntrospect = __esm({
|
|
|
23908
23965
|
}
|
|
23909
23966
|
return false;
|
|
23910
23967
|
};
|
|
23911
|
-
const
|
|
23968
|
+
const progress = new ProgressView(
|
|
23969
|
+
"Pulling schema from database...",
|
|
23970
|
+
"Pulling schema from database..."
|
|
23971
|
+
);
|
|
23972
|
+
const res = await (0, import_hanji9.renderWithTask)(
|
|
23973
|
+
progress,
|
|
23974
|
+
fromDatabase3(db, databaseName, filter2)
|
|
23975
|
+
);
|
|
23912
23976
|
const schema4 = { id: originUUID, prevId: "", ...res };
|
|
23913
23977
|
const { internal, ...schemaWithoutInternals } = schema4;
|
|
23914
23978
|
return { schema: schemaWithoutInternals };
|
|
@@ -23943,6 +24007,8 @@ init_mysqlSchema();
|
|
|
23943
24007
|
init_pgSerializer();
|
|
23944
24008
|
init_global();
|
|
23945
24009
|
init_mjs();
|
|
24010
|
+
init_views();
|
|
24011
|
+
var import_hanji3 = require("hanji");
|
|
23946
24012
|
var pgPushIntrospect = async (db, filters, schemaFilters) => {
|
|
23947
24013
|
const matchers = filters.map((it) => {
|
|
23948
24014
|
return new Minimatch(it);
|
|
@@ -23957,7 +24023,14 @@ var pgPushIntrospect = async (db, filters, schemaFilters) => {
|
|
|
23957
24023
|
}
|
|
23958
24024
|
return false;
|
|
23959
24025
|
};
|
|
23960
|
-
const
|
|
24026
|
+
const progress = new ProgressView(
|
|
24027
|
+
"Pulling schema from database...",
|
|
24028
|
+
"Pulling schema from database..."
|
|
24029
|
+
);
|
|
24030
|
+
const res = await (0, import_hanji3.renderWithTask)(
|
|
24031
|
+
progress,
|
|
24032
|
+
fromDatabase(db, filter2, schemaFilters)
|
|
24033
|
+
);
|
|
23961
24034
|
const schema4 = { id: originUUID, prevId: "", ...res };
|
|
23962
24035
|
const { internal, ...schemaWithoutInternals } = schema4;
|
|
23963
24036
|
return { schema: schemaWithoutInternals };
|
|
@@ -23965,7 +24038,7 @@ var pgPushIntrospect = async (db, filters, schemaFilters) => {
|
|
|
23965
24038
|
|
|
23966
24039
|
// src/cli/commands/pgPushUtils.ts
|
|
23967
24040
|
init_source();
|
|
23968
|
-
var
|
|
24041
|
+
var import_hanji6 = require("hanji");
|
|
23969
24042
|
init_pgSchema();
|
|
23970
24043
|
init_sqlgenerator();
|
|
23971
24044
|
init_selector_ui();
|
|
@@ -24215,7 +24288,7 @@ var pgSuggestions = async (db, statements) => {
|
|
|
24215
24288
|
)} table?
|
|
24216
24289
|
`
|
|
24217
24290
|
);
|
|
24218
|
-
const { status, data } = await (0,
|
|
24291
|
+
const { status, data } = await (0, import_hanji6.render)(
|
|
24219
24292
|
new Select([
|
|
24220
24293
|
"No, add the constraint without truncating the table",
|
|
24221
24294
|
`Yes, truncate the table`
|
|
@@ -24375,7 +24448,7 @@ Array.prototype.random = function() {
|
|
|
24375
24448
|
|
|
24376
24449
|
// src/cli/commands/sqliteIntrospect.ts
|
|
24377
24450
|
init_mjs();
|
|
24378
|
-
var
|
|
24451
|
+
var import_hanji7 = require("hanji");
|
|
24379
24452
|
var sqlitePushIntrospect = async (db, filters) => {
|
|
24380
24453
|
const matchers = filters.map((it) => {
|
|
24381
24454
|
return new Minimatch(it);
|
|
@@ -24390,7 +24463,14 @@ var sqlitePushIntrospect = async (db, filters) => {
|
|
|
24390
24463
|
}
|
|
24391
24464
|
return false;
|
|
24392
24465
|
};
|
|
24393
|
-
const
|
|
24466
|
+
const progress = new ProgressView(
|
|
24467
|
+
"Pulling schema from database...",
|
|
24468
|
+
"Pulling schema from database..."
|
|
24469
|
+
);
|
|
24470
|
+
const res = await (0, import_hanji7.renderWithTask)(
|
|
24471
|
+
progress,
|
|
24472
|
+
fromDatabase2(db, filter2)
|
|
24473
|
+
);
|
|
24394
24474
|
const schema4 = { id: originUUID, prevId: "", ...res };
|
|
24395
24475
|
return { schema: schema4 };
|
|
24396
24476
|
};
|
|
@@ -24507,7 +24587,7 @@ var logSuggestionsAndReturn = async (connection, statements, json1, json2, meta)
|
|
|
24507
24587
|
).find(
|
|
24508
24588
|
(c) => SQLiteSquasher.unsquashIdx(c).columns.includes(statement.columnName)
|
|
24509
24589
|
);
|
|
24510
|
-
const columnIsPk =
|
|
24590
|
+
const columnIsPk = json2.tables[newTableName].columns[statement.columnName].primaryKey;
|
|
24511
24591
|
const columnIsPartOfFk = Object.values(
|
|
24512
24592
|
json1.tables[newTableName].foreignKeys
|
|
24513
24593
|
).find(
|
|
@@ -24591,48 +24671,52 @@ var logSuggestionsAndReturn = async (connection, statements, json1, json2, meta)
|
|
|
24591
24671
|
}
|
|
24592
24672
|
}
|
|
24593
24673
|
} 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") {
|
|
24594
|
-
|
|
24595
|
-
|
|
24596
|
-
|
|
24597
|
-
|
|
24598
|
-
|
|
24599
|
-
const count2 = Number(res[0].count);
|
|
24600
|
-
if (count2 > 0) {
|
|
24601
|
-
infoToPrint.push(
|
|
24602
|
-
`\xB7 You're about to add not-null constraint to ${source_default.underline(
|
|
24603
|
-
statement.columnName
|
|
24604
|
-
)} column without default value, which contains ${count2} items`
|
|
24674
|
+
if (!(statement.type === "alter_table_alter_column_set_notnull" && statement.columnPk)) {
|
|
24675
|
+
const newTableName = getOldTableName(statement.tableName, meta);
|
|
24676
|
+
if (statement.type === "alter_table_alter_column_set_notnull" && typeof statement.columnDefault === "undefined") {
|
|
24677
|
+
const res = await connection.query(
|
|
24678
|
+
`select count(*) as count from \`${newTableName}\``
|
|
24605
24679
|
);
|
|
24606
|
-
|
|
24607
|
-
|
|
24608
|
-
|
|
24609
|
-
|
|
24610
|
-
|
|
24611
|
-
|
|
24612
|
-
|
|
24613
|
-
|
|
24614
|
-
|
|
24615
|
-
|
|
24680
|
+
const count2 = Number(res[0].count);
|
|
24681
|
+
if (count2 > 0) {
|
|
24682
|
+
infoToPrint.push(
|
|
24683
|
+
`\xB7 You're about to add not-null constraint to ${source_default.underline(
|
|
24684
|
+
statement.columnName
|
|
24685
|
+
)} column without default value, which contains ${count2} items`
|
|
24686
|
+
);
|
|
24687
|
+
tablesToTruncate.push(newTableName);
|
|
24688
|
+
shouldAskForApprove = true;
|
|
24689
|
+
}
|
|
24616
24690
|
tablesContext[newTableName] = _moveDataStatements(
|
|
24617
24691
|
statement.tableName,
|
|
24618
|
-
json2
|
|
24692
|
+
json2,
|
|
24693
|
+
true
|
|
24619
24694
|
);
|
|
24695
|
+
} else {
|
|
24696
|
+
if (typeof tablesContext[newTableName] === "undefined") {
|
|
24697
|
+
tablesContext[newTableName] = _moveDataStatements(
|
|
24698
|
+
statement.tableName,
|
|
24699
|
+
json2
|
|
24700
|
+
);
|
|
24701
|
+
}
|
|
24620
24702
|
}
|
|
24621
|
-
|
|
24622
|
-
|
|
24623
|
-
|
|
24624
|
-
|
|
24625
|
-
|
|
24626
|
-
|
|
24627
|
-
|
|
24628
|
-
|
|
24629
|
-
|
|
24630
|
-
|
|
24631
|
-
|
|
24632
|
-
|
|
24633
|
-
|
|
24634
|
-
|
|
24635
|
-
tablesContext[table4]
|
|
24703
|
+
const tablesReferncingCurrent = [];
|
|
24704
|
+
for (const table4 of Object.values(json1.tables)) {
|
|
24705
|
+
const tablesRefs = Object.values(json1.tables[table4.name].foreignKeys).filter(
|
|
24706
|
+
(t) => SQLiteSquasher.unsquashFK(t).tableTo === newTableName
|
|
24707
|
+
).map((t) => {
|
|
24708
|
+
return getNewTableName(
|
|
24709
|
+
SQLiteSquasher.unsquashFK(t).tableFrom,
|
|
24710
|
+
meta
|
|
24711
|
+
);
|
|
24712
|
+
});
|
|
24713
|
+
tablesReferncingCurrent.push(...tablesRefs);
|
|
24714
|
+
}
|
|
24715
|
+
const uniqueTableRefs = [...new Set(tablesReferncingCurrent)];
|
|
24716
|
+
for (const table4 of uniqueTableRefs) {
|
|
24717
|
+
if (typeof tablesContext[table4] === "undefined") {
|
|
24718
|
+
tablesContext[table4] = [..._moveDataStatements(table4, json2)];
|
|
24719
|
+
}
|
|
24636
24720
|
}
|
|
24637
24721
|
}
|
|
24638
24722
|
} else if (statement.type === "create_reference" || statement.type === "delete_reference" || statement.type === "alter_reference") {
|