rake-db 2.20.6 → 2.20.8

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/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as orchid_core from 'orchid-core';
2
- import { MaybeArray, RawSQLBase, ColumnDataCheckBase, RecordString, EmptyObject, ColumnSchemaConfig, RecordOptionalString, ColumnTypeBase, ForeignKeyTable, Sql, MaybePromise } from 'orchid-core';
2
+ import { MaybeArray, RawSQLBase, ColumnDataCheckBase, RecordString, EmptyObject, ColumnSchemaConfig, MaybePromise, RecordOptionalString, ColumnTypeBase, ForeignKeyTable, Sql } from 'orchid-core';
3
3
  import * as pqb from 'pqb';
4
4
  import { TableData, ColumnsShape, NoPrimaryKeyOption, ColumnType, EnumColumn, raw, Adapter, DbResult, TransactionAdapter, QueryLogObject, TableDataFn, TableDataItem, DbDomainArg, TextColumn, Db as Db$1, QueryArraysResult, AdapterOptions, DefaultColumnTypes, DefaultSchemaConfig, QueryLogOptions, SearchWeight, ColumnsByType, ArrayColumn } from 'pqb';
5
5
 
@@ -1247,7 +1247,7 @@ interface MigrationItem {
1247
1247
  load(): Promise<unknown>;
1248
1248
  }
1249
1249
  interface MigrationsSet {
1250
- renameTo?: RakeDbMigrationId;
1250
+ renameTo?: RakeDbRenameMigrations;
1251
1251
  migrations: MigrationItem[];
1252
1252
  }
1253
1253
 
@@ -1260,6 +1260,7 @@ interface RakeDbConfig<SchemaConfig extends ColumnSchemaConfig, CT = DefaultColu
1260
1260
  migrationsPath: string;
1261
1261
  migrationId: RakeDbMigrationId;
1262
1262
  migrations?: ModuleExportsRecord;
1263
+ renameMigrations?: RakeDbRenameMigrationsInput;
1263
1264
  recurrentPath: string;
1264
1265
  migrationsTable: string;
1265
1266
  snakeCase: boolean;
@@ -1284,7 +1285,7 @@ interface InputRakeDbConfigBase<SchemaConfig extends ColumnSchemaConfig, CT> ext
1284
1285
  basePath?: string;
1285
1286
  dbScript?: string;
1286
1287
  migrationsPath?: string;
1287
- migrationId?: RakeDbMigrationId;
1288
+ migrationId?: 'serial' | RakeDbMigrationId;
1288
1289
  recurrentPath?: string;
1289
1290
  migrationsTable?: string;
1290
1291
  snakeCase?: boolean;
@@ -1360,6 +1361,7 @@ type InputRakeDbConfig<SchemaConfig extends ColumnSchemaConfig, CT> = InputRakeD
1360
1361
  * To specify array of migrations explicitly, without loading them from files.
1361
1362
  */
1362
1363
  migrations: ModuleExportsRecord;
1364
+ renameMigrations?: RakeDbRenameMigrationsInput;
1363
1365
  /**
1364
1366
  * It may look odd, but it's required for `tsx` and other bundlers to have such `import` config specified explicitly.
1365
1367
  */
@@ -1395,11 +1397,26 @@ interface RakeDbBaseTable<CT> {
1395
1397
  interface ModuleExportsRecord {
1396
1398
  [K: string]: () => Promise<unknown>;
1397
1399
  }
1398
- type RakeDbMigrationId = 'serial' | 'timestamp';
1400
+ type RakeDbMigrationId = 'timestamp' | {
1401
+ serial: number;
1402
+ };
1403
+ interface RakeDbRenameMigrationsMap {
1404
+ [K: string]: number;
1405
+ }
1406
+ interface RakeDbRenameMigrations {
1407
+ to: RakeDbMigrationId;
1408
+ map(): MaybePromise<RakeDbRenameMigrationsMap>;
1409
+ }
1410
+ interface RakeDbRenameMigrationsInput {
1411
+ to: RakeDbMigrationId;
1412
+ map: RakeDbRenameMigrationsMap;
1413
+ }
1399
1414
  declare const migrationConfigDefaults: {
1400
1415
  schemaConfig: DefaultSchemaConfig;
1401
1416
  migrationsPath: string;
1402
- migrationId: "serial";
1417
+ migrationId: {
1418
+ serial: number;
1419
+ };
1403
1420
  migrationsTable: string;
1404
1421
  snakeCase: false;
1405
1422
  commands: {};
@@ -1435,7 +1452,7 @@ type RakeDbAppliedVersions = {
1435
1452
  map: RecordOptionalString;
1436
1453
  sequence: number[];
1437
1454
  };
1438
- declare const getMigratedVersionsMap: <SchemaConfig extends ColumnSchemaConfig<orchid_core.ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, orchid_core.CoreBaseOperators, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>>, CT>(ctx: RakeDbCtx, adapter: Adapter | TransactionAdapter, config: RakeDbConfig<SchemaConfig, CT>, renameTo?: RakeDbMigrationId) => Promise<RakeDbAppliedVersions>;
1455
+ declare const getMigratedVersionsMap: <SchemaConfig extends ColumnSchemaConfig<orchid_core.ColumnTypeBase<orchid_core.ColumnTypeSchemaArg, unknown, any, orchid_core.CoreBaseOperators, unknown, unknown, any, unknown, any, orchid_core.ColumnDataBase>>, CT>(ctx: RakeDbCtx, adapter: Adapter | TransactionAdapter, config: RakeDbConfig<SchemaConfig, CT>, renameTo?: RakeDbRenameMigrations) => Promise<RakeDbAppliedVersions>;
1439
1456
 
1440
1457
  declare const RAKE_DB_LOCK_KEY = "8582141715823621641";
1441
1458
  type MigrateFn = <SchemaConfig extends ColumnSchemaConfig, CT>(ctx: RakeDbCtx, options: AdapterOptions[], config: RakeDbConfig<SchemaConfig, CT>, args?: string[], adapters?: Adapter[], dontClose?: boolean) => Promise<Adapter[]>;
@@ -1777,4 +1794,4 @@ declare const promptText: ({ message, default: def, password, min, }: {
1777
1794
  min?: number;
1778
1795
  }) => Promise<string>;
1779
1796
 
1780
- export { AnyRakeDbConfig, ChangeCallback, ChangeTableCallback, ChangeTableOptions, ColumnComment, ColumnsShapeCallback, CommandFn, DbMigration, DbStructure, DbStructureDomainsMap, DropMode, InputRakeDbConfig, InputRakeDbConfigBase, IntrospectedStructure, Migration, MigrationAdapter, MigrationColumnTypes, ModuleExportsRecord, NoMigrationsTableError, RAKE_DB_LOCK_KEY, RakeDbAppliedVersions, RakeDbAst, RakeDbBaseTable, RakeDbChangeFn, RakeDbConfig, RakeDbCtx, RakeDbFn, RakeDbFnReturns, RakeDbLazyFn, RakeDbMigrationId, RakeDbResult, SilentQueries, StructureToAstCtx, StructureToAstTableData, TableOptions, addColumnComment, addColumnIndex, addOrDropEnumValues, astToMigration, changeCache, changeEnumValues, clearChanges, colors, columnToSql, columnTypeToSql, commentsToQuery, concatSchemaAndName, constraintToSql, createDb, createMigrationInterface, dbColumnToAst, deleteMigratedVersion, dropDb, encodeColumnDefault, exhaustive, generateTimeStamp, getColumnName, getConstraintName, getCurrentChanges, getDatabaseAndUserFromOptions, getDbStructureTableData, getDbTableColumnsChecks, getFirstWordAndRest, getForeignKeyTable, getIndexName, getMigratedVersionsMap, getSchemaAndTableFromName, getTextAfterFrom, getTextAfterTo, identityToSql, indexesToQuery, instantiateDbColumn, introspectDbSchema, joinColumns, joinWords, makeDbStructureColumnsShape, makeDomainsMap, makeFileVersion, makePopulateEnumQuery, makeStructureToAstCtx, migrate, migrateOrRollback, migrationConfigDefaults, newMigration, pluralize, primaryKeyToSql, processRakeDbConfig, promptConfirm, promptSelect, promptText, pushChange, queryLock, quoteNameFromString, quoteSchemaTable, quoteTable, quoteWithSchema, rakeDb, rakeDbAliases, rakeDbCommands, redo, referencesToSql, renameType, resetDb, rollback, saveMigratedVersion, structureToAst, tableToAst, transaction, versionToString, writeMigrationFile };
1797
+ export { AnyRakeDbConfig, ChangeCallback, ChangeTableCallback, ChangeTableOptions, ColumnComment, ColumnsShapeCallback, CommandFn, DbMigration, DbStructure, DbStructureDomainsMap, DropMode, InputRakeDbConfig, InputRakeDbConfigBase, IntrospectedStructure, Migration, MigrationAdapter, MigrationColumnTypes, ModuleExportsRecord, NoMigrationsTableError, RAKE_DB_LOCK_KEY, RakeDbAppliedVersions, RakeDbAst, RakeDbBaseTable, RakeDbChangeFn, RakeDbConfig, RakeDbCtx, RakeDbFn, RakeDbFnReturns, RakeDbLazyFn, RakeDbMigrationId, RakeDbRenameMigrations, RakeDbRenameMigrationsInput, RakeDbRenameMigrationsMap, RakeDbResult, SilentQueries, StructureToAstCtx, StructureToAstTableData, TableOptions, addColumnComment, addColumnIndex, addOrDropEnumValues, astToMigration, changeCache, changeEnumValues, clearChanges, colors, columnToSql, columnTypeToSql, commentsToQuery, concatSchemaAndName, constraintToSql, createDb, createMigrationInterface, dbColumnToAst, deleteMigratedVersion, dropDb, encodeColumnDefault, exhaustive, generateTimeStamp, getColumnName, getConstraintName, getCurrentChanges, getDatabaseAndUserFromOptions, getDbStructureTableData, getDbTableColumnsChecks, getFirstWordAndRest, getForeignKeyTable, getIndexName, getMigratedVersionsMap, getSchemaAndTableFromName, getTextAfterFrom, getTextAfterTo, identityToSql, indexesToQuery, instantiateDbColumn, introspectDbSchema, joinColumns, joinWords, makeDbStructureColumnsShape, makeDomainsMap, makeFileVersion, makePopulateEnumQuery, makeStructureToAstCtx, migrate, migrateOrRollback, migrationConfigDefaults, newMigration, pluralize, primaryKeyToSql, processRakeDbConfig, promptConfirm, promptSelect, promptText, pushChange, queryLock, quoteNameFromString, quoteSchemaTable, quoteTable, quoteWithSchema, rakeDb, rakeDbAliases, rakeDbCommands, redo, referencesToSql, renameType, resetDb, rollback, saveMigratedVersion, structureToAst, tableToAst, transaction, versionToString, writeMigrationFile };
package/dist/index.js CHANGED
@@ -112,7 +112,7 @@ var __spreadValues$9 = (a, b) => {
112
112
  return a;
113
113
  };
114
114
  var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
115
- const versionToString = (config, version) => config.migrationId === "serial" ? `${version}`.padStart(4, "0") : `${version}`;
115
+ const versionToString = (config, version) => config.migrationId === "timestamp" ? `${version}` : `${version}`.padStart(config.migrationId.serial, "0");
116
116
  const columnTypeToSql = (item) => {
117
117
  return item.data.isOfCustomType ? quoteNameFromString(item.toSQL()) : item.toSQL();
118
118
  };
@@ -2490,19 +2490,17 @@ const fileNamesToChangeMigrationId = {
2490
2490
  const fileNamesToChangeMigrationIdMap = Object.fromEntries(
2491
2491
  Object.entries(fileNamesToChangeMigrationId).map(([_, name]) => [name, true])
2492
2492
  );
2493
- const changeIds = async (options, config, [arg]) => {
2494
- var _a;
2493
+ const changeIds = async (options, config, [arg, digitsArg]) => {
2494
+ var _a, _b, _c, _d;
2495
2495
  if (arg !== "serial" && arg !== "timestamp") {
2496
2496
  throw new Error(
2497
2497
  `Pass "serial" or "timestamp" argument to the "change-ids" command`
2498
2498
  );
2499
2499
  }
2500
- if (config.migrations) {
2501
- throw new Error(
2502
- `Cannot change migrations ids when migrations set is defined in the config`
2503
- );
2504
- }
2505
- const data = await getMigrationsFromFiles(config, false, (_, filePath) => {
2500
+ let digits = digitsArg && parseInt(digitsArg);
2501
+ if (!digits || isNaN(digits))
2502
+ digits = 4;
2503
+ const data = await getMigrations({}, config, true, false, (_, filePath) => {
2506
2504
  const fileName = path.basename(filePath);
2507
2505
  const match = fileName.match(/^(\d+)\D/);
2508
2506
  if (!match) {
@@ -2513,47 +2511,87 @@ const changeIds = async (options, config, [arg]) => {
2513
2511
  return match[1];
2514
2512
  });
2515
2513
  if (data.renameTo) {
2516
- if (data.renameTo === arg) {
2517
- (_a = config.logger) == null ? void 0 : _a.log(`${fileNamesToChangeMigrationId[arg]} already exists`);
2514
+ if (arg === "serial" && typeof data.renameTo.to === "object" && digits === data.renameTo.to.serial || arg === "timestamp" && data.renameTo.to === "timestamp") {
2515
+ (_a = config.logger) == null ? void 0 : _a.log(
2516
+ config.migrations ? "`renameMigrations` setting is already set" : `${fileNamesToChangeMigrationId[arg]} already exists`
2517
+ );
2518
2518
  return;
2519
2519
  }
2520
- await fs.unlink(
2521
- path.join(
2522
- config.migrationsPath,
2523
- fileNamesToChangeMigrationId[data.renameTo]
2524
- )
2525
- );
2520
+ if (!config.migrations) {
2521
+ await fs.unlink(
2522
+ path.join(
2523
+ config.migrationsPath,
2524
+ fileNamesToChangeMigrationId[data.renameTo.to === "timestamp" ? "timestamp" : "serial"]
2525
+ )
2526
+ );
2527
+ }
2526
2528
  }
2527
2529
  const version = arg === "timestamp" ? parseInt(generateTimeStamp()) : 1;
2528
2530
  const rename = Object.fromEntries(
2529
2531
  data.migrations.map((item, i) => [path.basename(item.path), version + i])
2530
2532
  );
2531
- await fs.writeFile(
2532
- path.join(config.migrationsPath, fileNamesToChangeMigrationId[arg]),
2533
- JSON.stringify(rename, null, 2)
2534
- );
2535
- const values = [];
2536
- await Promise.all(
2537
- data.migrations.map(async (item, i) => {
2533
+ if (config.migrations) {
2534
+ const to = arg === "timestamp" ? `'${arg}'` : `{ serial: ${digits} }`;
2535
+ (_b = config.logger) == null ? void 0 : _b.log(
2536
+ `Save the following settings into your rake-db config under the \`migrations\` setting, it will instruct rake-db to rename migration entries during the next deploy:
2537
+ ${arg !== "serial" || digits !== 4 ? `
2538
+ migrationId: ${to},` : ""}
2539
+ renameMigrations: {
2540
+ to: ${to},
2541
+ map: {
2542
+ ` + Object.entries(rename).map(([key, value]) => `"${key}": ${value},`).join("\n ") + "\n },\n},\n\n"
2543
+ );
2544
+ } else {
2545
+ await fs.writeFile(
2546
+ path.join(config.migrationsPath, fileNamesToChangeMigrationId[arg]),
2547
+ JSON.stringify(rename, null, 2)
2548
+ );
2549
+ }
2550
+ const values = data.migrations.map(
2551
+ (item, i) => {
2538
2552
  let newVersion = String(version + i);
2539
2553
  if (arg === "serial")
2540
- newVersion = newVersion.padStart(4, "0");
2554
+ newVersion = newVersion.padStart(digits, "0");
2541
2555
  const name = path.basename(item.path).slice(item.version.length + 1);
2556
+ return [item.version, name, newVersion];
2557
+ }
2558
+ );
2559
+ if (!values.length)
2560
+ return;
2561
+ if (config.migrations) {
2562
+ (_c = config.logger) == null ? void 0 : _c.log(
2563
+ `If your migrations are stored in files, navigate to migrations directory and run the following commands to rename them:
2564
+
2565
+ ${values.map(
2566
+ ([version2, name, newVersion]) => `mv "${version2}_${name}" "${newVersion}_${name}"`
2567
+ ).join(
2568
+ "\n"
2569
+ )}
2570
+
2571
+ After setting \`renameMigrations\` (see above) and renaming the files, run the db up command to rename migration entries in your database`
2572
+ );
2573
+ return;
2574
+ }
2575
+ await Promise.all(
2576
+ data.migrations.map(async (item, i) => {
2577
+ const [, name, newVersion] = values[i];
2542
2578
  await fs.rename(
2543
2579
  item.path,
2544
2580
  path.join(path.dirname(item.path), `${newVersion}_${name}`)
2545
2581
  );
2546
- values.push([item.version, name, newVersion]);
2547
2582
  })
2548
2583
  );
2549
- if (!values.length)
2550
- return;
2551
2584
  await options.map((opts) => {
2552
2585
  const adapter = new pqb.Adapter(opts);
2553
2586
  renameMigrationVersionsInDb(config, adapter, values).then(
2554
2587
  () => adapter.close()
2555
2588
  );
2556
2589
  });
2590
+ (_d = config.logger) == null ? void 0 : _d.log(
2591
+ `Migration files were renamed, a config file ${fileNamesToChangeMigrationId[arg]} for renaming migrations after deploy was created, and migrations in local db were renamed successfully.
2592
+
2593
+ ${arg === "timestamp" || digits !== 4 ? `Set \`migrationId\`: ${arg === "timestamp" ? `'timestamp'` : `{ serial: ${digits} }`}` : `Remove \`migrationId\``} setting in the rake-db config`
2594
+ );
2557
2595
  };
2558
2596
  const renameMigrationVersionsInDb = async (config, adapter, values) => {
2559
2597
  await adapter.arrays({
@@ -2585,18 +2623,25 @@ var __spreadValues$5 = (a, b) => {
2585
2623
  return a;
2586
2624
  };
2587
2625
  var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
2588
- const getMigrations = async (ctx, config, up, allowDuplicates) => {
2626
+ const getMigrations = async (ctx, config, up, allowDuplicates, getVersion = getMigrationVersionOrThrow) => {
2589
2627
  var _a;
2590
- return ((_a = ctx.migrationsPromise) != null ? _a : ctx.migrationsPromise = config.migrations ? getMigrationsFromConfig(__spreadProps$3(__spreadValues$5({}, config), { migrations: config.migrations })) : getMigrationsFromFiles(config, allowDuplicates)).then(
2591
- (data) => up ? data : { renameTo: data.renameTo, migrations: [...data.migrations].reverse() }
2628
+ return ((_a = ctx.migrationsPromise) != null ? _a : ctx.migrationsPromise = config.migrations ? getMigrationsFromConfig(
2629
+ __spreadProps$3(__spreadValues$5({}, config), { migrations: config.migrations }),
2630
+ allowDuplicates,
2631
+ getVersion
2632
+ ) : getMigrationsFromFiles(config, allowDuplicates, getVersion)).then(
2633
+ (data) => up ? data : {
2634
+ renameTo: data.renameTo,
2635
+ migrations: [...data.migrations].reverse()
2636
+ }
2592
2637
  );
2593
2638
  };
2594
- function getMigrationsFromConfig(config, allowDuplicates) {
2639
+ function getMigrationsFromConfig(config, allowDuplicates, getVersion = getMigrationVersionOrThrow) {
2595
2640
  const result = [];
2596
2641
  const versions = {};
2597
2642
  const { migrations, basePath } = config;
2598
2643
  for (const key in migrations) {
2599
- const version = getMigrationVersionOrThrow(config, path.basename(key));
2644
+ const version = getVersion(config, path.basename(key));
2600
2645
  if (versions[version] && !allowDuplicates) {
2601
2646
  throw new Error(
2602
2647
  `Migration ${key} has the same version as ${versions[version]}`
@@ -2609,8 +2654,10 @@ function getMigrationsFromConfig(config, allowDuplicates) {
2609
2654
  load: migrations[key]
2610
2655
  });
2611
2656
  }
2657
+ const { renameMigrations } = config;
2612
2658
  return Promise.resolve({
2613
- migrations: result
2659
+ migrations: result,
2660
+ renameTo: renameMigrations ? { to: renameMigrations.to, map: () => renameMigrations.map } : void 0
2614
2661
  });
2615
2662
  }
2616
2663
  const sortMigrationsAsc = (a, b) => +a.version - +b.version;
@@ -2630,7 +2677,19 @@ async function getMigrationsFromFiles(config, allowDuplicates, getVersion = getM
2630
2677
  `Both files for renaming to serial and timestamp found, only one must remain`
2631
2678
  );
2632
2679
  }
2633
- data.renameTo = file.name === ".rename-to-serial.json" ? "serial" : "timestamp";
2680
+ const isSerialFile = file.name === ".rename-to-serial.json";
2681
+ const isSerialConfig = config.migrationId !== "timestamp";
2682
+ if (isSerialFile && !isSerialConfig || !isSerialFile && isSerialConfig) {
2683
+ throw new Error(
2684
+ `File ${file.name} to rename migrations does not match \`migrationId\` ${JSON.stringify(
2685
+ config.migrationId
2686
+ )} set in config`
2687
+ );
2688
+ }
2689
+ data.renameTo = {
2690
+ to: config.migrationId,
2691
+ map: () => renameMigrationsMap(config, file.name)
2692
+ };
2634
2693
  return data;
2635
2694
  } else {
2636
2695
  checkExt(file.name);
@@ -2668,6 +2727,21 @@ Run \`**db command** rebase\` to reorganize files with duplicated versions.`
2668
2727
  result.migrations.sort(sortMigrationsAsc);
2669
2728
  return result;
2670
2729
  }
2730
+ const renameMigrationsMap = async (config, fileName) => {
2731
+ const filePath = path.join(config.migrationsPath, fileName);
2732
+ const json = await fs.readFile(filePath, "utf-8");
2733
+ let data;
2734
+ try {
2735
+ data = JSON.parse(json);
2736
+ if (typeof data !== "object")
2737
+ throw new Error("Config for renaming is not an object");
2738
+ } catch (err) {
2739
+ throw new Error(`Failed to read ${node_url.pathToFileURL(filePath)}`, {
2740
+ cause: err
2741
+ });
2742
+ }
2743
+ return data;
2744
+ };
2671
2745
  function checkExt(filePath) {
2672
2746
  const ext = path.extname(filePath);
2673
2747
  if (ext !== ".ts" && ext !== ".js" && ext !== ".mjs") {
@@ -2782,32 +2856,20 @@ async function renameMigrations(config, trx, versions, renameTo) {
2782
2856
  }
2783
2857
  if (!first || getMigrationVersion(config, first))
2784
2858
  return versions;
2785
- const fileName = fileNamesToChangeMigrationId[renameTo];
2786
- const filePath = path.join(config.migrationsPath, fileName);
2787
- const json = await fs.readFile(filePath, "utf-8");
2788
- let data;
2789
- try {
2790
- data = JSON.parse(json);
2791
- if (typeof data !== "object")
2792
- throw new Error("Config for renaming is not an object");
2793
- } catch (err) {
2794
- throw new Error(`Failed to read ${node_url.pathToFileURL(filePath)}`, {
2795
- cause: err
2796
- });
2797
- }
2798
2859
  const values = [];
2799
2860
  const updatedVersions = {};
2861
+ const data = await renameTo.map();
2800
2862
  for (const version in versions) {
2801
2863
  const name = versions[version];
2802
2864
  const key = `${version}_${name}`;
2803
2865
  let newVersion = data[key];
2804
2866
  if (!newVersion) {
2805
2867
  throw new Error(
2806
- `Failed to find an entry for the migrated ${key} in the ${fileName} config`
2868
+ `Failed to find an entry for the migrated ${key} in the renaming config`
2807
2869
  );
2808
2870
  }
2809
- if (renameTo === "serial") {
2810
- newVersion = String(newVersion).padStart(4, "0");
2871
+ if (typeof renameTo.to === "object") {
2872
+ newVersion = String(newVersion).padStart(renameTo.to.serial, "0");
2811
2873
  }
2812
2874
  updatedVersions[newVersion] = name;
2813
2875
  values.push([version, name, newVersion]);
@@ -3085,7 +3147,7 @@ var __spreadValues$4 = (a, b) => {
3085
3147
  const migrationConfigDefaults = {
3086
3148
  schemaConfig: pqb.defaultSchemaConfig,
3087
3149
  migrationsPath: path.join("src", "db", "migrations"),
3088
- migrationId: "serial",
3150
+ migrationId: { serial: 4 },
3089
3151
  migrationsTable: "schemaMigrations",
3090
3152
  snakeCase: false,
3091
3153
  commands: {},
@@ -3145,6 +3207,9 @@ const processRakeDbConfig = (config) => {
3145
3207
  pqb.makeColumnTypes(pqb.defaultSchemaConfig)
3146
3208
  ) : ct) || pqb.makeColumnTypes;
3147
3209
  }
3210
+ if (config.migrationId === "serial") {
3211
+ result.migrationId = { serial: 4 };
3212
+ }
3148
3213
  return result;
3149
3214
  };
3150
3215
  const getDatabaseAndUserFromOptions = (options) => {
@@ -5346,9 +5411,9 @@ const rebase = async (options, config) => {
5346
5411
  if (config.migrations) {
5347
5412
  throw new Error("Cannot rebase migrations defined in the config");
5348
5413
  }
5349
- if (config.migrationId !== "serial") {
5414
+ if (config.migrationId === "timestamp") {
5350
5415
  throw new Error(
5351
- `Cannot rebase when the 'migrationId' is set to '${config.migrationId}' in the config`
5416
+ `Cannot rebase when the 'migrationId' is set to 'timestamp' in the config`
5352
5417
  );
5353
5418
  }
5354
5419
  const adapters = options.map((opts) => new pqb.Adapter(opts));
@@ -5707,7 +5772,7 @@ const rakeDbCommands = {
5707
5772
  helpArguments: {
5708
5773
  serial: "change ids to 4 digit serial",
5709
5774
  "serial *number*": "change ids to serial number of custom length",
5710
- "change-ids timestamp": "change ids to timestamps"
5775
+ timestamp: "change ids to timestamps"
5711
5776
  }
5712
5777
  }
5713
5778
  };