made_core/ports/
ceremony_evidence_request.rs1use 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}