runPending method
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;
}