Skip to main content

made_core/entities/
commit_outcome.rs

1use crate::entities::AuditRecord;
2use crate::value_objects::{CeremonyRevision, ExpectedRevision};
3
4/// Result of atomically committing ceremony state, audit records and messages.
5#[derive(Debug, Clone, PartialEq)]
6pub enum CommitOutcome {
7    Committed {
8        revision: CeremonyRevision,
9        records: Vec<AuditRecord>,
10    },
11    Conflict {
12        expected: ExpectedRevision,
13        stored: Option<CeremonyRevision>,
14    },
15}
16
17impl CommitOutcome {
18    #[must_use]
19    pub fn committed_revision(&self) -> Option<CeremonyRevision> {
20        match self {
21            Self::Committed { revision, .. } => Some(*revision),
22            Self::Conflict { .. } => None,
23        }
24    }
25
26    #[must_use]
27    pub fn records(&self) -> &[AuditRecord] {
28        match self {
29            Self::Committed { records, .. } => records,
30            Self::Conflict { .. } => &[],
31        }
32    }
33
34    #[must_use]
35    pub fn is_conflict(&self) -> bool {
36        matches!(self, Self::Conflict { .. })
37    }
38}