rake-db 2.3.8 → 2.3.9

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # rake-db
2
2
 
3
+ ## 2.3.9
4
+
5
+ ### Patch Changes
6
+
7
+ - Add migrate and rollback callbacks
8
+
3
9
  ## 2.3.8
4
10
 
5
11
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -389,6 +389,7 @@ declare namespace RakeDbAst {
389
389
  };
390
390
  }
391
391
 
392
+ declare type Db = DbResult<typeof columnTypes>;
392
393
  declare type RakeDbConfig = {
393
394
  migrationsPath: string;
394
395
  migrationsTable: string;
@@ -396,6 +397,10 @@ declare type RakeDbConfig = {
396
397
  noPrimaryKey?: NoPrimaryKeyOption;
397
398
  appCodeUpdater?: AppCodeUpdater;
398
399
  useCodeUpdater?: boolean;
400
+ beforeMigrate?(db: Db): Promise<void>;
401
+ afterMigrate?(db: Db): Promise<void>;
402
+ beforeRollback?(db: Db): Promise<void>;
403
+ afterRollback?(db: Db): Promise<void>;
399
404
  } & QueryLogOptions;
400
405
  declare type AppCodeUpdater = (params: {
401
406
  ast: RakeDbAst;
package/dist/index.js CHANGED
@@ -1137,8 +1137,9 @@ var __spreadValues$1 = (a, b) => {
1137
1137
  }
1138
1138
  return a;
1139
1139
  };
1140
+ const getDb = (adapter) => pqb.createDb({ adapter, columnTypes: pqb.columnTypes });
1140
1141
  const migrateOrRollback = async (options, config, args, up) => {
1141
- var _a;
1142
+ var _a, _b, _c, _d, _e;
1142
1143
  config = __spreadValues$1({}, config);
1143
1144
  const files = await getMigrationFiles(config, up);
1144
1145
  let count = up ? Infinity : 1;
@@ -1156,8 +1157,14 @@ const migrateOrRollback = async (options, config, args, up) => {
1156
1157
  delete config.appCodeUpdater;
1157
1158
  const appCodeUpdaterCache = {};
1158
1159
  for (const opts of pqb.toArray(options)) {
1159
- const db = new pqb.Adapter(opts);
1160
- const migratedVersions = await getMigratedVersionsMap(db, config);
1160
+ const adapter = new pqb.Adapter(opts);
1161
+ let db;
1162
+ if (up) {
1163
+ await ((_a = config.beforeMigrate) == null ? void 0 : _a.call(config, db != null ? db : db = getDb(adapter)));
1164
+ } else {
1165
+ await ((_b = config.beforeRollback) == null ? void 0 : _b.call(config, db != null ? db : db = getDb(adapter)));
1166
+ }
1167
+ const migratedVersions = await getMigratedVersionsMap(adapter, config);
1161
1168
  try {
1162
1169
  for (const file of files) {
1163
1170
  if (up && migratedVersions[file.version] || !up && !migratedVersions[file.version]) {
@@ -1165,11 +1172,23 @@ const migrateOrRollback = async (options, config, args, up) => {
1165
1172
  }
1166
1173
  if (count-- <= 0)
1167
1174
  break;
1168
- await processMigration(db, up, file, config, opts, appCodeUpdaterCache);
1169
- (_a = config.logger) == null ? void 0 : _a.log(`${file.path} ${up ? "migrated" : "rolled back"}`);
1175
+ await processMigration(
1176
+ adapter,
1177
+ up,
1178
+ file,
1179
+ config,
1180
+ opts,
1181
+ appCodeUpdaterCache
1182
+ );
1183
+ (_c = config.logger) == null ? void 0 : _c.log(`${file.path} ${up ? "migrated" : "rolled back"}`);
1184
+ }
1185
+ if (up) {
1186
+ await ((_d = config.afterMigrate) == null ? void 0 : _d.call(config, db != null ? db : db = getDb(adapter)));
1187
+ } else {
1188
+ await ((_e = config.afterRollback) == null ? void 0 : _e.call(config, db != null ? db : db = getDb(adapter)));
1170
1189
  }
1171
1190
  } finally {
1172
- await db.close();
1191
+ await adapter.close();
1173
1192
  }
1174
1193
  delete config.appCodeUpdater;
1175
1194
  }