buildRecoveryReport function

RecoveryReport buildRecoveryReport({
  1. required List<String> restoredPaths,
  2. required List<String> removedCreatedPaths,
  3. required List<String> unresolvedPaths,
  4. required List<String> manualActions,
})

Assembles a deterministic report whose state cannot overstate recovery.

Implementation

RecoveryReport buildRecoveryReport({
  required List<String> restoredPaths,
  required List<String> removedCreatedPaths,
  required List<String> unresolvedPaths,
  required List<String> manualActions,
}) {
  final restored = [...restoredPaths]..sort();
  final removed = [...removedCreatedPaths]..sort();
  final unresolved = [...unresolvedPaths]..sort();
  final actions = [...manualActions]..sort();
  final state = unresolved.isEmpty
      ? RecoveryState.rolledBack
      : removed.isNotEmpty || restored.isNotEmpty
      ? RecoveryState.partiallyRecovered
      : RecoveryState.manualRecoveryRequired;
  return RecoveryReport(
    state: state,
    restoredPaths: restored,
    removedCreatedPaths: removed,
    unresolvedPaths: unresolved,
    manualActions: actions,
  );
}