committedRecords method

Future<List<WalRecord>> committedRecords()

Implementation

Future<List<WalRecord>> committedRecords() async {
  final all = await readAll();
  if (all.isEmpty) return [];

  final committed  = <int>{0};
  final rolledBack = <int>{};
  for (final r in all) {
    if (r.op == WalOp.commitTxn)   committed.add(r.txnId);
    if (r.op == WalOp.rollbackTxn) rolledBack.add(r.txnId);
  }

  final result = all.where((r) {
    if (r.op == WalOp.beginTxn    ||
        r.op == WalOp.commitTxn   ||
        r.op == WalOp.rollbackTxn ||
        r.op == WalOp.checkpoint) return false;
    if (rolledBack.contains(r.txnId)) return false;
    return committed.contains(r.txnId);
  }).toList();

  result.sort((a, b) => a.lsn.compareTo(b.lsn));
  return result;
}