resolveRollbackTarget<TRecord> function

TRecord resolveRollbackTarget<TRecord>({
  1. required List<TRecord> activeHistory,
  2. required String? migrationName,
  3. required String migrationNameOf(
    1. TRecord record
    ),
})

Resolves which active migration should be rolled back.

Implementation

TRecord resolveRollbackTarget<TRecord>({
  required List<TRecord> activeHistory,
  required String? migrationName,
  required String Function(TRecord record) migrationNameOf,
}) {
  if (activeHistory.isEmpty) {
    throw StateError('No applied migrations available to roll back.');
  }
  if (migrationName == null) {
    return activeHistory.last;
  }
  for (final record in activeHistory.reversed) {
    if (migrationNameOf(record) == migrationName) {
      return record;
    }
  }
  throw StateError('Migration is not currently applied: $migrationName');
}