ralph/queue/repair/
types.rs1use crate::contracts::QueueFile;
23use serde::Serialize;
24
25#[derive(Debug, Default, Clone, Serialize)]
26pub struct RepairReport {
27 pub fixed_tasks: usize,
28 pub remapped_ids: Vec<(String, String)>,
29 pub fixed_timestamps: usize,
30}
31
32impl RepairReport {
33 pub fn is_empty(&self) -> bool {
34 self.fixed_tasks == 0 && self.remapped_ids.is_empty() && self.fixed_timestamps == 0
35 }
36}
37
38#[derive(Debug, Clone)]
39pub struct QueueRepairPlan {
40 pub(super) active: QueueFile,
41 pub(super) done: QueueFile,
42 pub(super) report: RepairReport,
43 pub(super) queue_changed: bool,
44 pub(super) done_changed: bool,
45}
46
47#[derive(Clone, Copy, Debug, Eq, PartialEq)]
48pub(super) enum RepairScope {
49 Maintenance,
50 Full,
51}
52
53impl QueueRepairPlan {
54 pub fn has_changes(&self) -> bool {
55 self.queue_changed || self.done_changed
56 }
57
58 pub fn report(&self) -> &RepairReport {
59 &self.report
60 }
61
62 pub fn into_parts(self) -> (QueueFile, QueueFile, RepairReport) {
63 (self.active, self.done, self.report)
64 }
65}