applyRepairMigration method

Future<String?> applyRepairMigration(
  1. DatabaseSession session
)

Applies the repair migration to the database.

Implementation

Future<String?> applyRepairMigration(DatabaseSession session) async {
  var repairMigration = await _artifactStore.readRepairMigration();
  if (repairMigration == null) {
    return null;
  }

  String? appliedVersion = repairMigration.version;
  await _withMigrationLock(session, (transaction) async {
    var appliedRepairMigration = await loadInstalledRepairMigration(
      session,
      transaction: transaction,
    );

    if (appliedRepairMigration != null &&
        appliedRepairMigration.version == repairMigration.version) {
      appliedVersion = null;
      return;
    }

    await session.db.unsafeSimpleExecute(
      repairMigration.migrationSql,
      transaction: transaction,
    );

    await _updateState(session, transaction);
  });

  return appliedVersion;
}