status method

Returns the status of all known migrations.

Implementation

Future<List<MigrationStatus>> status() async {
  await _ledger.ensureInitialized();
  final applied = await _ledger.readApplied();
  final appliedById = {
    for (final record in applied) record.id.toString(): record,
  };

  return _migrations
      .map((descriptor) {
        final record = appliedById[descriptor.id.toString()];
        return MigrationStatus(
          descriptor: descriptor,
          applied: record != null,
          appliedAt: record?.appliedAt,
          batch: record?.batch,
        );
      })
      .toList(growable: false);
}