@warlock.js/cascade 4.0.141 → 4.0.143

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 (87) hide show
  1. package/cjs/contracts/database-driver.contract.d.ts +14 -0
  2. package/cjs/contracts/database-driver.contract.d.ts.map +1 -1
  3. package/cjs/drivers/postgres/postgres-driver.d.ts +6 -0
  4. package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -1
  5. package/cjs/drivers/postgres/postgres-driver.js +8 -1
  6. package/cjs/drivers/postgres/postgres-driver.js.map +1 -1
  7. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
  8. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
  9. package/cjs/drivers/postgres/postgres-sql-serializer.js +394 -0
  10. package/cjs/drivers/postgres/postgres-sql-serializer.js.map +1 -0
  11. package/cjs/index.js +1 -1
  12. package/cjs/migration/column-builder.d.ts +14 -4
  13. package/cjs/migration/column-builder.d.ts.map +1 -1
  14. package/cjs/migration/column-builder.js +14 -5
  15. package/cjs/migration/column-builder.js.map +1 -1
  16. package/cjs/migration/column-helpers.d.ts +269 -0
  17. package/cjs/migration/column-helpers.d.ts.map +1 -0
  18. package/cjs/migration/column-helpers.js +384 -0
  19. package/cjs/migration/column-helpers.js.map +1 -0
  20. package/cjs/migration/index.d.ts +1 -0
  21. package/cjs/migration/index.d.ts.map +1 -1
  22. package/cjs/migration/migration-runner.d.ts +32 -1
  23. package/cjs/migration/migration-runner.d.ts.map +1 -1
  24. package/cjs/migration/migration-runner.js +216 -46
  25. package/cjs/migration/migration-runner.js.map +1 -1
  26. package/cjs/migration/migration.d.ts +337 -4
  27. package/cjs/migration/migration.d.ts.map +1 -1
  28. package/cjs/migration/migration.js +331 -4
  29. package/cjs/migration/migration.js.map +1 -1
  30. package/cjs/migration/sql-grammar.d.ts +18 -0
  31. package/cjs/migration/sql-grammar.d.ts.map +1 -0
  32. package/cjs/migration/sql-grammar.js +77 -0
  33. package/cjs/migration/sql-grammar.js.map +1 -0
  34. package/cjs/migration/sql-serializer.d.ts +22 -0
  35. package/cjs/migration/sql-serializer.d.ts.map +1 -0
  36. package/cjs/migration/sql-serializer.js +26 -0
  37. package/cjs/migration/sql-serializer.js.map +1 -0
  38. package/cjs/migration/types.d.ts +13 -0
  39. package/cjs/migration/types.d.ts.map +1 -1
  40. package/cjs/types.d.ts +23 -0
  41. package/cjs/types.d.ts.map +1 -1
  42. package/cjs/writer/database-writer.js +4 -4
  43. package/cjs/writer/database-writer.js.map +1 -1
  44. package/esm/contracts/database-driver.contract.d.ts +14 -0
  45. package/esm/contracts/database-driver.contract.d.ts.map +1 -1
  46. package/esm/drivers/postgres/postgres-driver.d.ts +6 -0
  47. package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -1
  48. package/esm/drivers/postgres/postgres-driver.js +8 -1
  49. package/esm/drivers/postgres/postgres-driver.js.map +1 -1
  50. package/esm/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
  51. package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
  52. package/esm/drivers/postgres/postgres-sql-serializer.js +394 -0
  53. package/esm/drivers/postgres/postgres-sql-serializer.js.map +1 -0
  54. package/esm/index.js +1 -1
  55. package/esm/migration/column-builder.d.ts +14 -4
  56. package/esm/migration/column-builder.d.ts.map +1 -1
  57. package/esm/migration/column-builder.js +14 -5
  58. package/esm/migration/column-builder.js.map +1 -1
  59. package/esm/migration/column-helpers.d.ts +269 -0
  60. package/esm/migration/column-helpers.d.ts.map +1 -0
  61. package/esm/migration/column-helpers.js +384 -0
  62. package/esm/migration/column-helpers.js.map +1 -0
  63. package/esm/migration/index.d.ts +1 -0
  64. package/esm/migration/index.d.ts.map +1 -1
  65. package/esm/migration/migration-runner.d.ts +32 -1
  66. package/esm/migration/migration-runner.d.ts.map +1 -1
  67. package/esm/migration/migration-runner.js +216 -46
  68. package/esm/migration/migration-runner.js.map +1 -1
  69. package/esm/migration/migration.d.ts +337 -4
  70. package/esm/migration/migration.d.ts.map +1 -1
  71. package/esm/migration/migration.js +331 -4
  72. package/esm/migration/migration.js.map +1 -1
  73. package/esm/migration/sql-grammar.d.ts +18 -0
  74. package/esm/migration/sql-grammar.d.ts.map +1 -0
  75. package/esm/migration/sql-grammar.js +77 -0
  76. package/esm/migration/sql-grammar.js.map +1 -0
  77. package/esm/migration/sql-serializer.d.ts +22 -0
  78. package/esm/migration/sql-serializer.d.ts.map +1 -0
  79. package/esm/migration/sql-serializer.js +26 -0
  80. package/esm/migration/sql-serializer.js.map +1 -0
  81. package/esm/migration/types.d.ts +13 -0
  82. package/esm/migration/types.d.ts.map +1 -1
  83. package/esm/types.d.ts +23 -0
  84. package/esm/types.d.ts.map +1 -1
  85. package/esm/writer/database-writer.js +4 -4
  86. package/esm/writer/database-writer.js.map +1 -1
  87. package/package.json +4 -4
@@ -6,7 +6,6 @@ import type { MigrationRecord, MigrationResult } from "./types";
6
6
  */
7
7
  type MigrationClass = (new () => Migration) & {
8
8
  migrationName: string;
9
- order?: number;
10
9
  createdAt?: string;
11
10
  };
12
11
  /**
@@ -159,6 +158,10 @@ export declare class MigrationRunner {
159
158
  * ```
160
159
  */
161
160
  runAll(options?: ExecuteOptions): Promise<MigrationResult[]>;
161
+ /**
162
+ * Export pending migrations as phase-ordered SQL files in database/sql/ directory.
163
+ */
164
+ exportSQL(): Promise<void>;
162
165
  /**
163
166
  * Rollback the last batch of migrations.
164
167
  *
@@ -201,6 +204,34 @@ export declare class MigrationRunner {
201
204
  * Run a single migration.
202
205
  */
203
206
  private runMigration;
207
+ /**
208
+ * Create, configure, and return a ready-to-use migration instance.
209
+ *
210
+ * Centralises the repeated "new + setDriver + setMigrationDefaults" boilerplate
211
+ * that all batch/single execution paths need.
212
+ *
213
+ * @internal
214
+ */
215
+ private createMigrationInstance;
216
+ /**
217
+ * Format an ordered array of TaggedSQL into a human-readable SQL file string.
218
+ *
219
+ * Consecutive statements that belong to the same (phase, migration) group share
220
+ * a single block comment at the top, avoiding the noisy per-statement repetition.
221
+ *
222
+ * Example output:
223
+ * ```sql
224
+ * /* Phase 3 [create-users] *\/
225
+ * ALTER TABLE "users" ADD COLUMN "name" TEXT NOT NULL;
226
+ * ALTER TABLE "users" ADD COLUMN "email" TEXT NOT NULL;
227
+ *
228
+ * /* Phase 4 [create-users] *\/
229
+ * CREATE UNIQUE INDEX ...;
230
+ * ```
231
+ *
232
+ * @internal
233
+ */
234
+ private formatSQLForExport;
204
235
  /**
205
236
  * Get pending (not executed) registered migrations.
206
237
  */
@@ -1 +1 @@
1
- {"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../src/migration/migration-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../src/migration/migration-runner.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {colors}from'@mongez/copper';import {log}from'@warlock.js/logger';import {dataSourceRegistry}from'../data-source/data-source-registry.js';/**
1
+ import {colors}from'@mongez/copper';import {log}from'@warlock.js/logger';import fs from'fs';import path from'path';import {dataSourceRegistry}from'../data-source/data-source-registry.js';import {SQLGrammar}from'./sql-grammar.js';/**
2
2
  * Parse createdAt timestamp from custom format to Date.
3
3
  * Supports both: MM-DD-YYYY_HH-MM-SS and DD-MM-YYYY_HH-MM-SS
4
4
  * Intelligently detects format by checking if first value > 12 (must be day)
@@ -51,18 +51,10 @@ function parseCreatedAt(createdAt) {
51
51
  * Comparator for sorting migration classes.
52
52
  *
53
53
  * Priority:
54
- * 1. Explicit `order` (lower = earlier)
55
- * 2. `createdAt` timestamp (older = earlier)
56
- * 3. Alphabetical by migration name (last resort)
54
+ * 1. `createdAt` timestamp (older = earlier)
55
+ * 2. Alphabetical by migration name (last resort)
57
56
  */
58
57
  function sortMigrations(a, b) {
59
- // Both have explicit order → numeric sort
60
- if (a.order !== undefined && b.order !== undefined)
61
- return a.order - b.order;
62
- if (a.order !== undefined)
63
- return -1;
64
- if (b.order !== undefined)
65
- return 1;
66
58
  // Sort by createdAt timestamp
67
59
  const aDate = a.createdAt ? parseCreatedAt(a.createdAt) : undefined;
68
60
  const bDate = b.createdAt ? parseCreatedAt(b.createdAt) : undefined;
@@ -281,23 +273,161 @@ class MigrationRunner {
281
273
  log.warn("database", "migration", "Nothing to migrate.");
282
274
  return results;
283
275
  }
284
- log.info("database", "migration", `Found ${pending.length} pending migration(s).`);
276
+ log.info("database", "migration", `Found ${pending.length} pending migration(s). Generating SQL pool...`);
285
277
  const nextBatch = await this.getNextBatchNumber();
278
+ const taggedStatements = [];
279
+ const migrationsData = [];
280
+ // 1. Collect SQL from each pending migration
286
281
  for (const MigrationClass of pending) {
287
- const result = await this.runMigration(MigrationClass, "up", {
288
- dryRun,
289
- record,
290
- batch: nextBatch,
282
+ const migration = this.createMigrationInstance(MigrationClass);
283
+ const name = MigrationClass.migrationName;
284
+ await migration.up();
285
+ const upStatements = migration.toSQL();
286
+ migrationsData.push({ MigrationClass, migration, name });
287
+ for (const sql of upStatements) {
288
+ taggedStatements.push({
289
+ sql,
290
+ phase: SQLGrammar.classify(sql),
291
+ createdAt: MigrationClass.createdAt,
292
+ migrationName: name,
293
+ });
294
+ }
295
+ }
296
+ // 2. Sort all SQL statements globally across all pending migrations
297
+ const sortedStatements = SQLGrammar.sort(taggedStatements);
298
+ // 3. Execute in a single batch
299
+ if (dryRun) {
300
+ log.info("database", "migration", "Dry run enabled. Would execute the following statements:");
301
+ for (const statement of sortedStatements) {
302
+ console.log(`-- Phase ${statement.phase} [${statement.migrationName}]`);
303
+ console.log(statement.sql + ";\n");
304
+ }
305
+ return [];
306
+ }
307
+ const driver = this.getDataSource().driver;
308
+ let transactionFailed = false;
309
+ let errorMessage = "";
310
+ const startTime = Date.now();
311
+ // Use transaction if supported
312
+ if (driver.transaction) {
313
+ try {
314
+ await driver.transaction(async () => {
315
+ for (const statement of sortedStatements) {
316
+ await driver.query(statement.sql);
317
+ }
318
+ if (record) {
319
+ for (const data of migrationsData) {
320
+ await this.recordMigration(data.name, nextBatch, data.MigrationClass.createdAt
321
+ ? parseCreatedAt(data.MigrationClass.createdAt)
322
+ : new Date());
323
+ }
324
+ }
325
+ });
326
+ }
327
+ catch (err) {
328
+ transactionFailed = true;
329
+ errorMessage = err instanceof Error ? err.message : String(err);
330
+ }
331
+ }
332
+ else {
333
+ // Non-transactional execution
334
+ try {
335
+ for (const statement of sortedStatements) {
336
+ await driver.query(statement.sql);
337
+ }
338
+ if (record) {
339
+ for (const data of migrationsData) {
340
+ await this.recordMigration(data.name, nextBatch, data.MigrationClass.createdAt
341
+ ? parseCreatedAt(data.MigrationClass.createdAt)
342
+ : new Date());
343
+ }
344
+ }
345
+ }
346
+ catch (err) {
347
+ transactionFailed = true;
348
+ errorMessage = err instanceof Error ? err.message : String(err);
349
+ }
350
+ }
351
+ const durationMs = Date.now() - startTime;
352
+ // Report results per-migration for compatibility
353
+ for (const data of migrationsData) {
354
+ results.push({
355
+ name: data.name,
356
+ table: data.migration.table,
357
+ direction: "up",
358
+ success: !transactionFailed,
359
+ error: transactionFailed ? errorMessage : undefined,
360
+ durationMs: Math.round(durationMs / migrationsData.length),
361
+ executedAt: new Date(),
291
362
  });
292
- results.push(result);
293
- if (!result.success) {
294
- break; // Stop on first error
363
+ if (transactionFailed) {
364
+ log.error("database", "migration", `${colors.magenta(data.name)}: ✗ Failed during batch execution: ${errorMessage}`);
365
+ }
366
+ else {
367
+ log.success("database", "migration", `Migrated: ${colors.magenta(data.name)} successfully`);
295
368
  }
296
369
  }
370
+ if (transactionFailed) {
371
+ log.error("database", "migration", `Batch execution failed. Rollback performed if transactional.`);
372
+ throw new Error("Migration batch failed: " + errorMessage);
373
+ }
297
374
  const successCount = results.filter((r) => r.success).length;
298
- log.success("database", "migration", `Migration complete: ${successCount}/${pending.length} successful.`);
375
+ log.success("database", "migration", `Migration bulk phase execution complete: ${successCount}/${pending.length} migrations processed successfully.`);
299
376
  return results;
300
377
  }
378
+ /**
379
+ * Export pending migrations as phase-ordered SQL files in database/sql/ directory.
380
+ */
381
+ async exportSQL() {
382
+ const pending = await this.getPendingMigrations();
383
+ if (pending.length === 0) {
384
+ log.warn("database", "migration", "No pending migrations to export.");
385
+ return;
386
+ }
387
+ log.info("database", "migration", `Exporting ${pending.length} pending migration(s) to SQL files...`);
388
+ const upStatements = [];
389
+ const downStatements = [];
390
+ for (const MigrationClass of pending) {
391
+ const migration = this.createMigrationInstance(MigrationClass);
392
+ const name = MigrationClass.migrationName;
393
+ // Collect up SQL
394
+ await migration.up();
395
+ for (const sql of migration.toSQL()) {
396
+ upStatements.push({
397
+ sql,
398
+ phase: SQLGrammar.classify(sql),
399
+ createdAt: MigrationClass.createdAt,
400
+ migrationName: name,
401
+ });
402
+ }
403
+ // Collect down SQL (reuse same instance — toSQL() cleared pendingOps)
404
+ await migration.down();
405
+ for (const sql of migration.toSQL()) {
406
+ downStatements.push({
407
+ sql,
408
+ phase: SQLGrammar.classify(sql),
409
+ createdAt: MigrationClass.createdAt,
410
+ migrationName: name,
411
+ });
412
+ }
413
+ }
414
+ const sortedUp = SQLGrammar.sort(upStatements);
415
+ // Down SQL: reverse order (undo in reverse dependency order)
416
+ const sortedDown = downStatements.reverse();
417
+ const upSQLString = this.formatSQLForExport(sortedUp);
418
+ const downSQLString = this.formatSQLForExport(sortedDown);
419
+ const rootPath = process.cwd();
420
+ const sqlDir = path.join(rootPath, "database", "sql");
421
+ if (!fs.existsSync(sqlDir)) {
422
+ fs.mkdirSync(sqlDir, { recursive: true });
423
+ }
424
+ const timestamp = new Date().toISOString().replace(/T/, "_").replace(/:/g, "-").split(".")[0];
425
+ const upPath = path.join(sqlDir, `migration_${timestamp}.up.sql`);
426
+ const downPath = path.join(sqlDir, `migration_${timestamp}.down.sql`);
427
+ fs.writeFileSync(upPath, upSQLString);
428
+ fs.writeFileSync(downPath, downSQLString);
429
+ log.success("database", "migration", `Exported to:\n- ${upPath}\n- ${downPath}`);
430
+ }
301
431
  /**
302
432
  * Rollback the last batch of migrations.
303
433
  *
@@ -416,18 +546,22 @@ class MigrationRunner {
416
546
  // ============================================================================
417
547
  // EXECUTE WITH OR WITHOUT TRANSACTION
418
548
  // ============================================================================
419
- if (shouldUseTransaction && driver.supportsTransactions()) {
420
- // Transactional execution (PostgreSQL default)
421
- await driver.beginTransaction();
422
- try {
423
- // Execute migration DDL operations
424
- if (direction === "up") {
425
- await migration.up();
426
- }
427
- else {
428
- await migration.down();
549
+ // Collect SQL for the requested direction
550
+ if (direction === "up") {
551
+ await migration.up();
552
+ }
553
+ else {
554
+ await migration.down();
555
+ }
556
+ const sqlStatements = migration.toSQL();
557
+ const databaseDriver = this.getDataSource().driver;
558
+ if (shouldUseTransaction && databaseDriver.transaction) {
559
+ // Transactional execution
560
+ await databaseDriver.transaction(async () => {
561
+ // Execute generated SQL statements sequentially (no phase-sorting here since it's single execution)
562
+ for (const sql of sqlStatements) {
563
+ await databaseDriver.query(sql);
429
564
  }
430
- await migration.execute();
431
565
  // Record migration tracking
432
566
  if (record) {
433
567
  if (direction === "up") {
@@ -438,24 +572,13 @@ class MigrationRunner {
438
572
  await this.removeMigrationRecord(name);
439
573
  }
440
574
  }
441
- // Commit transaction on success
442
- await driver.commit();
443
- }
444
- catch (txError) {
445
- // Rollback transaction on failure
446
- await driver.rollback();
447
- throw txError;
448
- }
575
+ });
449
576
  }
450
577
  else {
451
- // Non-transactional execution (MongoDB default, or explicit override)
452
- if (direction === "up") {
453
- await migration.up();
578
+ // Non-transactional execution
579
+ for (const sql of sqlStatements) {
580
+ await databaseDriver.query(sql);
454
581
  }
455
- else {
456
- await migration.down();
457
- }
458
- await migration.execute();
459
582
  if (record) {
460
583
  if (direction === "up") {
461
584
  const batch = options.batch ?? (await this.getNextBatchNumber());
@@ -488,6 +611,53 @@ class MigrationRunner {
488
611
  executedAt: new Date(),
489
612
  };
490
613
  }
614
+ /**
615
+ * Create, configure, and return a ready-to-use migration instance.
616
+ *
617
+ * Centralises the repeated "new + setDriver + setMigrationDefaults" boilerplate
618
+ * that all batch/single execution paths need.
619
+ *
620
+ * @internal
621
+ */
622
+ createMigrationInstance(MigrationClass) {
623
+ const migration = new MigrationClass();
624
+ migration.setDriver(this.getMigrationDriver());
625
+ migration.setMigrationDefaults(this.getDataSource().migrationDefaults);
626
+ return migration;
627
+ }
628
+ /**
629
+ * Format an ordered array of TaggedSQL into a human-readable SQL file string.
630
+ *
631
+ * Consecutive statements that belong to the same (phase, migration) group share
632
+ * a single block comment at the top, avoiding the noisy per-statement repetition.
633
+ *
634
+ * Example output:
635
+ * ```sql
636
+ * /* Phase 3 [create-users] *\/
637
+ * ALTER TABLE "users" ADD COLUMN "name" TEXT NOT NULL;
638
+ * ALTER TABLE "users" ADD COLUMN "email" TEXT NOT NULL;
639
+ *
640
+ * /* Phase 4 [create-users] *\/
641
+ * CREATE UNIQUE INDEX ...;
642
+ * ```
643
+ *
644
+ * @internal
645
+ */
646
+ formatSQLForExport(statements) {
647
+ const lines = [];
648
+ let lastGroupKey = null;
649
+ for (const stmt of statements) {
650
+ const groupKey = `Phase ${stmt.phase} [${stmt.migrationName}]`;
651
+ if (groupKey !== lastGroupKey) {
652
+ if (lines.length > 0)
653
+ lines.push(""); // blank line between groups
654
+ lines.push(`/* ${groupKey} */`);
655
+ lastGroupKey = groupKey;
656
+ }
657
+ lines.push(`${stmt.sql};`);
658
+ }
659
+ return lines.join("\n");
660
+ }
491
661
  /**
492
662
  * Get pending (not executed) registered migrations.
493
663
  */
@@ -1 +1 @@
1
- {"version":3,"file":"migration-runner.js","sources":["../../src/migration/migration-runner.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-runner.js","sources":["../../src/migration/migration-runner.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}