runPending method

Future<List<String>> runPending()

Applies every pending migration (each in a transaction) and returns the versions that ran.

Implementation

Future<List<String>> runPending() async {
  await ensureTrackerTable();
  final applied = (await appliedVersions()).toSet();
  final ran = <String>[];
  for (final migration in await source.discover()) {
    if (applied.contains(migration.version)) continue;
    await connection.transaction((tx) async {
      await tx.executeSql(migration.up);
      await tx.execute(
        insertInto(SchemaMigrationsTable.table)
            .value(SchemaMigrationsTable.version.set(migration.version))
            .value(SchemaMigrationsTable.runOn.set(_runOn())),
      );
    });
    ran.add(migration.version);
  }
  return ran;
}