neoorm 0.1.3 → 0.1.4

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.
Files changed (75) hide show
  1. package/README.md +88 -0
  2. package/dist/bin/neoorm.js +28 -7
  3. package/dist/bin/neoorm.js.map +1 -1
  4. package/dist/codegen/diff-manifest.d.ts +11 -0
  5. package/dist/codegen/diff-manifest.d.ts.map +1 -0
  6. package/dist/codegen/diff-manifest.js +504 -0
  7. package/dist/codegen/diff-manifest.js.map +1 -0
  8. package/dist/codegen/generate.d.ts +6 -5
  9. package/dist/codegen/generate.d.ts.map +1 -1
  10. package/dist/codegen/generate.js +21 -54
  11. package/dist/codegen/generate.js.map +1 -1
  12. package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
  13. package/dist/codegen/schema-to-manifest.js +7 -4
  14. package/dist/codegen/schema-to-manifest.js.map +1 -1
  15. package/dist/dialect/index.d.ts +1 -1
  16. package/dist/dialect/index.d.ts.map +1 -1
  17. package/dist/dialect/index.js.map +1 -1
  18. package/dist/dialect/postgres.d.ts +8 -1
  19. package/dist/dialect/postgres.d.ts.map +1 -1
  20. package/dist/dialect/postgres.js +240 -29
  21. package/dist/dialect/postgres.js.map +1 -1
  22. package/dist/dialect/types.d.ts +57 -4
  23. package/dist/dialect/types.d.ts.map +1 -1
  24. package/dist/index.d.ts +4 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +3 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/introspect/pull.d.ts.map +1 -1
  29. package/dist/introspect/pull.js +15 -32
  30. package/dist/introspect/pull.js.map +1 -1
  31. package/dist/introspect/queries.d.ts +36 -0
  32. package/dist/introspect/queries.d.ts.map +1 -0
  33. package/dist/introspect/queries.js +102 -0
  34. package/dist/introspect/queries.js.map +1 -0
  35. package/dist/introspect/to-manifest.d.ts +4 -0
  36. package/dist/introspect/to-manifest.d.ts.map +1 -0
  37. package/dist/introspect/to-manifest.js +188 -0
  38. package/dist/introspect/to-manifest.js.map +1 -0
  39. package/dist/migrate/runner.d.ts +12 -1
  40. package/dist/migrate/runner.d.ts.map +1 -1
  41. package/dist/migrate/runner.js +43 -13
  42. package/dist/migrate/runner.js.map +1 -1
  43. package/dist/runtime/query/compile.d.ts +2 -2
  44. package/dist/runtime/query/compile.d.ts.map +1 -1
  45. package/dist/runtime/query/compile.js +240 -44
  46. package/dist/runtime/query/compile.js.map +1 -1
  47. package/dist/runtime/query/count.d.ts.map +1 -1
  48. package/dist/runtime/query/count.js +1 -1
  49. package/dist/runtime/query/count.js.map +1 -1
  50. package/dist/runtime/query/delete.d.ts.map +1 -1
  51. package/dist/runtime/query/delete.js +2 -2
  52. package/dist/runtime/query/delete.js.map +1 -1
  53. package/dist/runtime/query/find.d.ts.map +1 -1
  54. package/dist/runtime/query/find.js +1 -1
  55. package/dist/runtime/query/find.js.map +1 -1
  56. package/dist/runtime/query/update.d.ts.map +1 -1
  57. package/dist/runtime/query/update.js +2 -2
  58. package/dist/runtime/query/update.js.map +1 -1
  59. package/dist/schema/column-where.d.ts +36 -0
  60. package/dist/schema/column-where.d.ts.map +1 -0
  61. package/dist/schema/column-where.js +2 -0
  62. package/dist/schema/column-where.js.map +1 -0
  63. package/dist/schema/column.d.ts.map +1 -1
  64. package/dist/schema/column.js +1 -1
  65. package/dist/schema/column.js.map +1 -1
  66. package/dist/schema/index.d.ts +1 -1
  67. package/dist/schema/index.d.ts.map +1 -1
  68. package/dist/schema/relation-types.d.ts +65 -16
  69. package/dist/schema/relation-types.d.ts.map +1 -1
  70. package/dist/schema/relation.d.ts +13 -13
  71. package/dist/schema/relation.d.ts.map +1 -1
  72. package/dist/schema/relation.js.map +1 -1
  73. package/dist/schema/types.d.ts +12 -38
  74. package/dist/schema/types.d.ts.map +1 -1
  75. package/package.json +1 -1
@@ -0,0 +1,504 @@
1
+ import { postgresDialect, resolveFkConstraintName, resolveIndexSqlName, resolveUniqueConstraintName, canAutoCastType, resolveColumnSqlType, } from "../dialect/postgres.js";
2
+ function tablesBySqlName(manifest) {
3
+ return new Map(Object.values(manifest.tables).map((table) => [table.sqlName, table]));
4
+ }
5
+ export function columnSqlType(col, manifest) {
6
+ return resolveColumnSqlType(col, manifest);
7
+ }
8
+ function isUnsafeTypeChange(alter, manifest) {
9
+ if (!alter.setType || alter.fromSqlType === undefined) {
10
+ return false;
11
+ }
12
+ return !canAutoCastType(alter.fromSqlType, columnSqlType(alter.setType, manifest));
13
+ }
14
+ function effectiveNullable(col) {
15
+ return col.primary ? false : col.nullable;
16
+ }
17
+ function isColumnUniqueIndex(table, index) {
18
+ if (!index.unique || index.columns.length !== 1) {
19
+ return false;
20
+ }
21
+ const col = table.columns.find((c) => c.sqlName === index.columns[0]);
22
+ return col?.unique === true;
23
+ }
24
+ function defaultsEqual(a, b) {
25
+ if (a.defaultNow !== b.defaultNow)
26
+ return false;
27
+ return JSON.stringify(a.defaultValue) === JSON.stringify(b.defaultValue);
28
+ }
29
+ function typeOptionsEqual(a, b) {
30
+ return JSON.stringify(a ?? {}) === JSON.stringify(b ?? {});
31
+ }
32
+ export function columnsEqual(a, b, manifest) {
33
+ return (a.kind === b.kind &&
34
+ effectiveNullable(a) === effectiveNullable(b) &&
35
+ a.unique === b.unique &&
36
+ a.primary === b.primary &&
37
+ defaultsEqual(a, b) &&
38
+ typeOptionsEqual(a.typeOptions, b.typeOptions) &&
39
+ columnSqlType(a, manifest) === columnSqlType(b, manifest) &&
40
+ (a.kind !== "fk" ||
41
+ (a.fkTarget === b.fkTarget && a.onDelete === b.onDelete)));
42
+ }
43
+ function fkColumns(table) {
44
+ return table.columns.filter((c) => c.kind === "fk" && c.fkTarget);
45
+ }
46
+ function indexSqlName(table, index) {
47
+ return index.sqlName ?? resolveIndexSqlName(table.sqlName, index);
48
+ }
49
+ function indexesEqual(a, b) {
50
+ return (a.unique === b.unique &&
51
+ a.columns.length === b.columns.length &&
52
+ a.columns.every((col, i) => col === b.columns[i]));
53
+ }
54
+ function indexSignature(index) {
55
+ return `${index.unique ? "u" : "n"}:${index.columns.join(",")}`;
56
+ }
57
+ function diffIndexes(prevTable, nextTable) {
58
+ const prevBySqlName = new Map(prevTable.indexes.map((idx) => [indexSqlName(prevTable, idx), idx]));
59
+ const nextBySqlName = new Map(nextTable.indexes.map((idx) => [indexSqlName(nextTable, idx), idx]));
60
+ const prevBySignature = new Map(prevTable.indexes.map((idx) => [indexSignature(idx), idx]));
61
+ const nextBySignature = new Map(nextTable.indexes.map((idx) => [indexSignature(idx), idx]));
62
+ const addIndexes = [];
63
+ const dropIndexes = [];
64
+ const matchedPrevSqlNames = new Set();
65
+ for (const [sqlName, nextIdx] of nextBySqlName) {
66
+ const prevIdx = prevBySqlName.get(sqlName);
67
+ if (prevIdx) {
68
+ matchedPrevSqlNames.add(sqlName);
69
+ if (!indexesEqual(prevIdx, nextIdx)) {
70
+ dropIndexes.push(sqlName);
71
+ addIndexes.push(nextIdx);
72
+ }
73
+ continue;
74
+ }
75
+ const prevBySig = prevBySignature.get(indexSignature(nextIdx));
76
+ if (prevBySig) {
77
+ matchedPrevSqlNames.add(indexSqlName(prevTable, prevBySig));
78
+ if (!indexesEqual(prevBySig, nextIdx)) {
79
+ dropIndexes.push(indexSqlName(prevTable, prevBySig));
80
+ addIndexes.push(nextIdx);
81
+ }
82
+ continue;
83
+ }
84
+ addIndexes.push(nextIdx);
85
+ }
86
+ for (const [sqlName, prevIdx] of prevBySqlName) {
87
+ if (matchedPrevSqlNames.has(sqlName))
88
+ continue;
89
+ if (nextBySignature.has(indexSignature(prevIdx)))
90
+ continue;
91
+ if (isColumnUniqueIndex(nextTable, prevIdx))
92
+ continue;
93
+ dropIndexes.push(sqlName);
94
+ }
95
+ return { addIndexes, dropIndexes };
96
+ }
97
+ function diffForeignKeys(prevTable, nextTable) {
98
+ const prevFks = new Map(fkColumns(prevTable).map((c) => [c.sqlName, c]));
99
+ const nextFks = new Map(fkColumns(nextTable).map((c) => [c.sqlName, c]));
100
+ const changes = [];
101
+ for (const [sqlName, nextCol] of nextFks) {
102
+ const prevCol = prevFks.get(sqlName);
103
+ if (!prevCol) {
104
+ const add = { target: nextCol.fkTarget };
105
+ if (nextCol.onDelete !== undefined) {
106
+ add.onDelete = nextCol.onDelete;
107
+ }
108
+ if (nextCol.fkConstraintName !== undefined) {
109
+ add.constraintName = nextCol.fkConstraintName;
110
+ }
111
+ changes.push({ column: sqlName, add });
112
+ continue;
113
+ }
114
+ if (prevCol.fkTarget !== nextCol.fkTarget ||
115
+ prevCol.onDelete !== nextCol.onDelete) {
116
+ const add = { target: nextCol.fkTarget };
117
+ if (nextCol.onDelete !== undefined) {
118
+ add.onDelete = nextCol.onDelete;
119
+ }
120
+ if (nextCol.fkConstraintName !== undefined) {
121
+ add.constraintName = nextCol.fkConstraintName;
122
+ }
123
+ changes.push({
124
+ column: sqlName,
125
+ drop: prevCol.fkConstraintName ??
126
+ resolveFkConstraintName(prevTable.sqlName, sqlName),
127
+ add,
128
+ });
129
+ }
130
+ }
131
+ for (const [sqlName, prevCol] of prevFks) {
132
+ if (!nextFks.has(sqlName)) {
133
+ changes.push({
134
+ column: sqlName,
135
+ drop: prevCol.fkConstraintName ??
136
+ resolveFkConstraintName(prevTable.sqlName, sqlName),
137
+ });
138
+ }
139
+ }
140
+ return changes;
141
+ }
142
+ function buildColumnAlter(prevCol, nextCol, prevTable, alterSqlName, prevManifest, nextManifest) {
143
+ const alter = { sqlName: alterSqlName };
144
+ let hasAlter = false;
145
+ if (columnSqlType(prevCol, prevManifest) !== columnSqlType(nextCol, nextManifest)) {
146
+ alter.setType = { ...nextCol, sqlName: alterSqlName };
147
+ alter.fromSqlType = columnSqlType(prevCol, prevManifest);
148
+ hasAlter = true;
149
+ }
150
+ if (effectiveNullable(prevCol) !== effectiveNullable(nextCol)) {
151
+ alter.setNullable = effectiveNullable(nextCol);
152
+ hasAlter = true;
153
+ }
154
+ if (!defaultsEqual(prevCol, nextCol)) {
155
+ alter.setDefault =
156
+ nextCol.defaultNow || nextCol.defaultValue !== undefined
157
+ ? { ...nextCol, sqlName: alterSqlName }
158
+ : null;
159
+ hasAlter = true;
160
+ }
161
+ if (prevCol.unique !== nextCol.unique) {
162
+ if (prevCol.unique) {
163
+ alter.dropUniqueConstraint =
164
+ prevCol.uniqueConstraintName ??
165
+ resolveUniqueConstraintName(prevTable.sqlName, prevCol.sqlName);
166
+ }
167
+ if (nextCol.unique) {
168
+ alter.setUnique = true;
169
+ }
170
+ hasAlter = true;
171
+ }
172
+ if (prevCol.primary !== nextCol.primary) {
173
+ hasAlter = true;
174
+ }
175
+ return hasAlter ? alter : null;
176
+ }
177
+ function diffColumns(prevTable, nextTable, prevManifest, nextManifest) {
178
+ const prevByTs = new Map(prevTable.columns.map((c) => [c.tsName, c]));
179
+ const nextByTs = new Map(nextTable.columns.map((c) => [c.tsName, c]));
180
+ const prevBySql = new Map(prevTable.columns.map((c) => [c.sqlName, c]));
181
+ const nextBySql = new Map(nextTable.columns.map((c) => [c.sqlName, c]));
182
+ const renameColumns = [];
183
+ const renameFrom = new Set();
184
+ const renameTo = new Set();
185
+ for (const nextCol of nextTable.columns) {
186
+ const prevCol = prevByTs.get(nextCol.tsName);
187
+ if (prevCol && prevCol.sqlName !== nextCol.sqlName) {
188
+ renameColumns.push({ from: prevCol.sqlName, to: nextCol.sqlName });
189
+ renameFrom.add(prevCol.sqlName);
190
+ renameTo.add(nextCol.sqlName);
191
+ }
192
+ }
193
+ const addColumns = [];
194
+ for (const nextCol of nextTable.columns) {
195
+ if (renameTo.has(nextCol.sqlName))
196
+ continue;
197
+ if (prevBySql.has(nextCol.sqlName))
198
+ continue;
199
+ if (prevByTs.has(nextCol.tsName))
200
+ continue;
201
+ addColumns.push(nextCol);
202
+ }
203
+ const dropColumns = [];
204
+ for (const prevCol of prevTable.columns) {
205
+ if (renameFrom.has(prevCol.sqlName))
206
+ continue;
207
+ if (nextBySql.has(prevCol.sqlName))
208
+ continue;
209
+ if (nextByTs.has(prevCol.tsName))
210
+ continue;
211
+ dropColumns.push(prevCol.sqlName);
212
+ }
213
+ const alterColumns = [];
214
+ for (const nextCol of nextTable.columns) {
215
+ const prevCol = prevByTs.get(nextCol.tsName);
216
+ if (!prevCol)
217
+ continue;
218
+ const alterSqlName = prevCol.sqlName !== nextCol.sqlName ? nextCol.sqlName : prevCol.sqlName;
219
+ const alter = buildColumnAlter(prevCol, nextCol, prevTable, alterSqlName, prevManifest, nextManifest);
220
+ if (alter) {
221
+ alterColumns.push(alter);
222
+ }
223
+ }
224
+ return { addColumns, dropColumns, renameColumns, alterColumns };
225
+ }
226
+ function diffTable(prevTable, nextTable, prevManifest, nextManifest) {
227
+ if (!prevTable && nextTable) {
228
+ return {
229
+ table: nextTable,
230
+ create: true,
231
+ ...(nextManifest ? { manifest: nextManifest } : {}),
232
+ };
233
+ }
234
+ if (prevTable && !nextTable) {
235
+ return {
236
+ table: prevTable,
237
+ drop: true,
238
+ ...(nextManifest ? { manifest: nextManifest } : {}),
239
+ };
240
+ }
241
+ if (!prevTable || !nextTable) {
242
+ return null;
243
+ }
244
+ const columnDiff = diffColumns(prevTable, nextTable, prevManifest, nextManifest);
245
+ const { addIndexes, dropIndexes } = diffIndexes(prevTable, nextTable);
246
+ const fkChanges = diffForeignKeys(prevTable, nextTable);
247
+ const hasChanges = columnDiff.addColumns.length > 0 ||
248
+ columnDiff.dropColumns.length > 0 ||
249
+ columnDiff.renameColumns.length > 0 ||
250
+ columnDiff.alterColumns.length > 0 ||
251
+ addIndexes.length > 0 ||
252
+ dropIndexes.length > 0 ||
253
+ fkChanges.length > 0;
254
+ if (!hasChanges) {
255
+ return null;
256
+ }
257
+ return {
258
+ table: nextTable,
259
+ ...(nextManifest ? { manifest: nextManifest } : {}),
260
+ ...(columnDiff.addColumns.length > 0
261
+ ? { addColumns: columnDiff.addColumns }
262
+ : {}),
263
+ ...(columnDiff.dropColumns.length > 0
264
+ ? { dropColumns: columnDiff.dropColumns }
265
+ : {}),
266
+ ...(columnDiff.renameColumns.length > 0
267
+ ? { renameColumns: columnDiff.renameColumns }
268
+ : {}),
269
+ ...(columnDiff.alterColumns.length > 0
270
+ ? { alterColumns: columnDiff.alterColumns }
271
+ : {}),
272
+ ...(addIndexes.length > 0 ? { addIndexes } : {}),
273
+ ...(dropIndexes.length > 0 ? { dropIndexes } : {}),
274
+ ...(fkChanges.length > 0 ? { fkChanges } : {}),
275
+ };
276
+ }
277
+ function classifyDestructive(diff, prevTable) {
278
+ const changes = [];
279
+ const tableName = diff.table.sqlName;
280
+ const manifest = diff.manifest;
281
+ if (diff.drop) {
282
+ changes.push({
283
+ kind: "drop_table",
284
+ table: tableName,
285
+ detail: `Drop table "${tableName}"`,
286
+ sql: postgresDialect.emitDropTable(diff.table),
287
+ });
288
+ return changes;
289
+ }
290
+ for (const col of diff.dropColumns ?? []) {
291
+ changes.push({
292
+ kind: "drop_column",
293
+ table: tableName,
294
+ detail: `Drop column "${tableName}"."${col}"`,
295
+ sql: `ALTER TABLE ${postgresDialect.quoteIdentifier(tableName)} DROP COLUMN ${postgresDialect.quoteIdentifier(col)};`,
296
+ });
297
+ }
298
+ for (const alter of diff.alterColumns ?? []) {
299
+ if (alter.setType && isUnsafeTypeChange(alter, manifest)) {
300
+ for (const sql of postgresDialect.emitAlterColumn(diff.table, alter, manifest)) {
301
+ if (sql.includes(" TYPE ")) {
302
+ changes.push({
303
+ kind: "alter_column_type_manual",
304
+ table: tableName,
305
+ detail: `Change type of "${tableName}"."${alter.sqlName}" (requires manual migration)`,
306
+ sql,
307
+ });
308
+ }
309
+ }
310
+ }
311
+ if (prevTable) {
312
+ const prevCol = prevTable.columns.find((c) => c.sqlName === alter.sqlName ||
313
+ c.tsName === diff.table.columns.find((n) => n.sqlName === alter.sqlName)
314
+ ?.tsName);
315
+ const nextCol = diff.table.columns.find((c) => c.sqlName === alter.sqlName);
316
+ if (prevCol && nextCol && prevCol.primary !== nextCol.primary) {
317
+ changes.push({
318
+ kind: "alter_primary_key",
319
+ table: tableName,
320
+ detail: `Change primary key on "${tableName}"."${alter.sqlName}"`,
321
+ sql: `-- primary key change on ${tableName}.${alter.sqlName} requires manual migration`,
322
+ });
323
+ }
324
+ }
325
+ }
326
+ for (const indexName of diff.dropIndexes ?? []) {
327
+ changes.push({
328
+ kind: "drop_index",
329
+ table: tableName,
330
+ detail: `Drop index "${indexName}" on "${tableName}"`,
331
+ sql: postgresDialect.emitDropIndex(indexName),
332
+ });
333
+ }
334
+ for (const change of diff.fkChanges ?? []) {
335
+ if (change.drop) {
336
+ changes.push({
337
+ kind: "drop_fk",
338
+ table: tableName,
339
+ detail: `Drop foreign key on "${tableName}"."${change.column}"`,
340
+ sql: postgresDialect.emitDropConstraint(tableName, change.drop),
341
+ });
342
+ }
343
+ }
344
+ return changes;
345
+ }
346
+ function stripDestructiveFromDiff(diff) {
347
+ if (diff.drop) {
348
+ return null;
349
+ }
350
+ const fkChanges = diff.fkChanges?.filter((change) => !change.drop);
351
+ const alterColumns = diff.alterColumns?.filter((alter) => !alter.setType || !isUnsafeTypeChange(alter, diff.manifest));
352
+ const stripped = {
353
+ table: diff.table,
354
+ ...(diff.create ? { create: diff.create } : {}),
355
+ ...(diff.addColumns && diff.addColumns.length > 0
356
+ ? { addColumns: diff.addColumns }
357
+ : {}),
358
+ ...(diff.renameColumns && diff.renameColumns.length > 0
359
+ ? { renameColumns: diff.renameColumns }
360
+ : {}),
361
+ ...(alterColumns && alterColumns.length > 0 ? { alterColumns } : {}),
362
+ ...(diff.addIndexes && diff.addIndexes.length > 0
363
+ ? { addIndexes: diff.addIndexes }
364
+ : {}),
365
+ ...(fkChanges && fkChanges.length > 0 ? { fkChanges } : {}),
366
+ };
367
+ const hasChanges = stripped.create ||
368
+ (stripped.addColumns?.length ?? 0) > 0 ||
369
+ (stripped.renameColumns?.length ?? 0) > 0 ||
370
+ (stripped.alterColumns?.length ?? 0) > 0 ||
371
+ (stripped.addIndexes?.length ?? 0) > 0 ||
372
+ (stripped.fkChanges?.length ?? 0) > 0;
373
+ return hasChanges ? stripped : null;
374
+ }
375
+ export function buildMigrationSql(tableDiffs, extensions = [], manifest) {
376
+ const sql = [];
377
+ if (extensions.length > 0) {
378
+ sql.push(...postgresDialect.emitCreateExtensions(extensions));
379
+ }
380
+ const alterDiffs = tableDiffs.filter((d) => !d.create && !d.drop);
381
+ const dropDiffs = tableDiffs.filter((d) => d.drop);
382
+ const createDiffs = tableDiffs.filter((d) => d.create);
383
+ for (const diff of alterDiffs) {
384
+ sql.push(...postgresDialect.emitAlterTable(diff.table, diff));
385
+ }
386
+ for (const diff of dropDiffs) {
387
+ sql.push(postgresDialect.emitDropTable(diff.table));
388
+ }
389
+ for (const diff of createDiffs) {
390
+ sql.push(postgresDialect.emitCreateTable(diff.table, {
391
+ inlineForeignKeys: false,
392
+ ...(manifest ? { manifest } : {}),
393
+ }));
394
+ for (const index of diff.table.indexes) {
395
+ if (!index.unique) {
396
+ sql.push(postgresDialect.emitCreateIndex(diff.table, index));
397
+ }
398
+ }
399
+ for (const col of fkColumns(diff.table)) {
400
+ sql.push(postgresDialect.emitAddForeignKey(diff.table, col));
401
+ }
402
+ }
403
+ return sql;
404
+ }
405
+ export function diffManifest(prev, next) {
406
+ if (!prev) {
407
+ const sql = [];
408
+ const extensions = next.extensions ?? [];
409
+ sql.push(...postgresDialect.emitCreateExtensions(extensions));
410
+ const tables = Object.values(next.tables);
411
+ for (const table of tables) {
412
+ sql.push(postgresDialect.emitCreateTable(table, { manifest: next }));
413
+ for (const index of table.indexes) {
414
+ if (!index.unique) {
415
+ sql.push(postgresDialect.emitCreateIndex(table, index));
416
+ }
417
+ }
418
+ }
419
+ return { isInitial: true, sql, destructive: [] };
420
+ }
421
+ const prevBySql = tablesBySqlName(prev);
422
+ const nextBySql = tablesBySqlName(next);
423
+ const allSqlNames = new Set([...prevBySql.keys(), ...nextBySql.keys()]);
424
+ const tableDiffs = [];
425
+ const destructive = [];
426
+ const prevExtensions = new Set(prev.extensions ?? []);
427
+ const newExtensions = (next.extensions ?? []).filter((ext) => !prevExtensions.has(ext));
428
+ for (const sqlName of allSqlNames) {
429
+ const prevTable = prevBySql.get(sqlName);
430
+ const nextTable = nextBySql.get(sqlName);
431
+ const diff = diffTable(prevTable, nextTable, prev, next);
432
+ if (!diff)
433
+ continue;
434
+ tableDiffs.push(diff);
435
+ destructive.push(...classifyDestructive(diff, prevTable));
436
+ }
437
+ const sql = buildMigrationSql(tableDiffs, newExtensions, next);
438
+ return { isInitial: false, sql, destructive };
439
+ }
440
+ export function resolveMigrationSql(diff, prev, next, acceptDataLoss) {
441
+ if (acceptDataLoss) {
442
+ const blocked = diff.destructive.filter((change) => change.kind === "alter_column_type_manual");
443
+ if (blocked.length === 0) {
444
+ return { sql: diff.sql, blocked: [] };
445
+ }
446
+ const blockedSql = new Set(blocked.map((change) => change.sql));
447
+ return {
448
+ sql: diff.sql.filter((statement) => !blockedSql.has(statement)),
449
+ blocked,
450
+ };
451
+ }
452
+ if (diff.destructive.length === 0) {
453
+ return { sql: diff.sql, blocked: [] };
454
+ }
455
+ if (!prev) {
456
+ return { sql: diff.sql, blocked: [] };
457
+ }
458
+ const prevBySql = tablesBySqlName(prev);
459
+ const nextBySql = tablesBySqlName(next);
460
+ const allSqlNames = new Set([...prevBySql.keys(), ...nextBySql.keys()]);
461
+ const safeDiffs = [];
462
+ for (const sqlName of allSqlNames) {
463
+ const prevTable = prevBySql.get(sqlName);
464
+ const nextTable = nextBySql.get(sqlName);
465
+ const tableDiff = diffTable(prevTable, nextTable, prev, next);
466
+ if (!tableDiff)
467
+ continue;
468
+ const stripped = stripDestructiveFromDiff(tableDiff);
469
+ if (stripped) {
470
+ safeDiffs.push(stripped);
471
+ }
472
+ }
473
+ const prevExtensions = new Set(prev.extensions ?? []);
474
+ const newExtensions = (next.extensions ?? []).filter((ext) => !prevExtensions.has(ext));
475
+ return {
476
+ sql: buildMigrationSql(safeDiffs, newExtensions, next),
477
+ blocked: diff.destructive,
478
+ };
479
+ }
480
+ export function formatDestructiveWarnings(destructive) {
481
+ return destructive.map((change) => {
482
+ switch (change.kind) {
483
+ case "drop_table":
484
+ return `${change.detail} — this may cause irreversible data loss`;
485
+ case "drop_column":
486
+ return `${change.detail} — this may cause irreversible data loss`;
487
+ case "alter_column_type":
488
+ return `${change.detail} — this may fail or truncate existing data`;
489
+ case "alter_column_type_manual":
490
+ return `${change.detail} — add a manual migration with an explicit USING expression`;
491
+ case "drop_index":
492
+ return `${change.detail} — this may affect query performance`;
493
+ case "drop_fk":
494
+ return `${change.detail} — this may affect referential integrity`;
495
+ case "alter_primary_key":
496
+ return `${change.detail} — primary key changes require manual migration`;
497
+ default: {
498
+ const _exhaustive = change.kind;
499
+ return _exhaustive;
500
+ }
501
+ }
502
+ });
503
+ }
504
+ //# sourceMappingURL=diff-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-manifest.js","sourceRoot":"","sources":["../../src/codegen/diff-manifest.ts"],"names":[],"mappings":"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"}
@@ -17,10 +17,7 @@ export declare function readSnapshot(outDir: string): Promise<Manifest | null>;
17
17
  export declare function writeSnapshot(outDir: string, manifest: Manifest): Promise<void>;
18
18
  export declare function emitManifestTs(manifest: Manifest, packageImportPath: string): string;
19
19
  export declare function emitClientTs(schemaImportPath: string, packageImportPath: string): string;
20
- export declare function diffManifest(prev: Manifest | null, next: Manifest): {
21
- isInitial: boolean;
22
- sql: string[];
23
- };
20
+ export { diffManifest, formatDestructiveWarnings, resolveMigrationSql, columnsEqual, columnSqlType, } from "./diff-manifest.js";
24
21
  export declare function writeMigration(outDir: string, sql: string[], name?: string): Promise<string | null>;
25
22
  export declare function writeGeneratedFiles(outDir: string, manifest: Manifest, migrationSql: string[], schemaPath: string): Promise<{
26
23
  migrationName: string | null;
@@ -30,6 +27,10 @@ export type GenerateResult = {
30
27
  migrationName: string | null;
31
28
  schemaChanged: boolean;
32
29
  warnings: string[];
30
+ destructiveBlocked: boolean;
31
+ };
32
+ export type GenerateOptions = {
33
+ acceptDataLoss?: boolean;
33
34
  };
34
- export declare function generateFromSchema(schemaPath: string, outDir: string): Promise<GenerateResult>;
35
+ export declare function generateFromSchema(schemaPath: string, outDir: string, options?: GenerateOptions): Promise<GenerateResult>;
35
36
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAA6B,MAAM,qBAAqB,CAAC;AAI/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAkDpD,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,MAAM,EAAE,OAAO,4BAA4B,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9G,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC,CAsBD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAKvD;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE;IACN,QAAQ,CAAC,OAAO,EAAE,MAAM,CACtB,MAAM,EACN;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;KAAE,CACjD,CAAC;CACH,GACA,MAAM,EAAE,CAiBV;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAO3E;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAMpF;AAED,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAsBxF;AAgBD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,IAAI,EAAE,QAAQ,GACb;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAsDvC;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBxB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA2B3C;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAoBzB"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAQpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAkDpD,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,MAAM,EAAE,OAAO,4BAA4B,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9G,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC,CAsBD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAKvD;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE;IACN,QAAQ,CAAC,OAAO,EAAE,MAAM,CACtB,MAAM,EACN;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;KAAE,CACjD,CAAC;CACH,GACA,MAAM,EAAE,CAiBV;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAO3E;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAMpF;AAED,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAsBxF;AAgBD,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBxB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA2B3C;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAmDzB"}