Skip to main content

made_core/ports/
ceremony_evidence_request.rs

1use crate::entities::CeremonyEvidencePack;
2use crate::error::DomainError;
3use crate::value_objects::{
4    CeremonyContext, CeremonyEvidenceSourceId, CeremonyId, CeremonyInterventionContent,
5    CeremonyInterventionId, RoleId,
6};
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct CeremonyEvidenceRequest {
10    instance_id: CeremonyId,
11    intervention_id: CeremonyInterventionId,
12    role_id: RoleId,
13    source_id: CeremonyEvidenceSourceId,
14    query: CeremonyInterventionContent,
15    context: CeremonyContext,
16}
17
18impl CeremonyEvidenceRequest {
19    #[must_use]
20    pub fn new(
21        instance_id: CeremonyId,
22        intervention_id: CeremonyInterventionId,
23        role_id: RoleId,
24        source_id: CeremonyEvidenceSourceId,
25        query: CeremonyInterventionContent,
26        context: CeremonyContext,
27    ) -> Self {
28        Self {
29            instance_id,
30            intervention_id,
31            role_id,
32            source_id,
33            query,
34            context,
35        }
36    }
37
38    #[must_use]
39    pub fn instance_id(&self) -> &CeremonyId {
40        &self.instance_id
41    }
42
43    #[must_use]
44    pub fn intervention_id(&self) -> &CeremonyInterventionId {
45        &self.intervention_id
46    }
47
48    #[must_use]
49    pub fn role_id(&self) -> &RoleId {
50        &self.role_id
51    }
52
53    #[must_use]
54    pub fn source_id(&self) -> &CeremonyEvidenceSourceId {
55        &self.source_id
56    }
57
58    #[must_use]
59    pub fn query(&self) -> &CeremonyInterventionContent {
60        &self.query
61    }
62
63    #[must_use]
64    pub fn context(&self) -> &CeremonyContext {
65        &self.context
66    }
67
68    pub fn ensure_matches(&self, pack: &CeremonyEvidencePack) -> Result<(), DomainError> {
69        if pack.source_id() == &self.source_id {
70            Ok(())
71        } else {
72            Err(DomainError::InvariantViolated {
73                reason: "ceremony evidence source returned a pack for another source",
74            })
75        }
76    }
77}