made_core/ports/
ceremony_execution_observation.rs1use time::OffsetDateTime;
2
3use crate::value_objects::{
4 ArtifactRef, ExternalOperationId, MeasuredBudgetQuantities, StepClaimFence, StepResult,
5};
6
7#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct CeremonyExecutionObservation {
10 producer_claim_fence: StepClaimFence,
11 external_operation_id: Option<ExternalOperationId>,
12 result: StepResult,
13 artifacts: Vec<ArtifactRef>,
14 budget_measurement: MeasuredBudgetQuantities,
15 observed_at: OffsetDateTime,
16}
17
18impl CeremonyExecutionObservation {
19 #[must_use]
20 pub fn new(
21 producer_claim_fence: StepClaimFence,
22 external_operation_id: Option<ExternalOperationId>,
23 result: StepResult,
24 artifacts: Vec<ArtifactRef>,
25 observed_at: OffsetDateTime,
26 ) -> Self {
27 Self {
28 producer_claim_fence,
29 external_operation_id,
30 result,
31 artifacts,
32 budget_measurement: MeasuredBudgetQuantities::default(),
33 observed_at,
34 }
35 }
36
37 #[must_use]
38 pub fn with_budget_measurement(mut self, measured: MeasuredBudgetQuantities) -> Self {
39 self.budget_measurement = measured;
40 self
41 }
42
43 #[must_use]
44 pub const fn producer_claim_fence(&self) -> &StepClaimFence {
45 &self.producer_claim_fence
46 }
47
48 #[must_use]
49 pub const fn external_operation_id(&self) -> Option<&ExternalOperationId> {
50 self.external_operation_id.as_ref()
51 }
52
53 #[must_use]
54 pub const fn result(&self) -> &StepResult {
55 &self.result
56 }
57
58 #[must_use]
59 pub fn artifacts(&self) -> &[ArtifactRef] {
60 &self.artifacts
61 }
62
63 #[must_use]
64 pub const fn observed_at(&self) -> OffsetDateTime {
65 self.observed_at
66 }
67
68 #[must_use]
69 pub const fn budget_measurement(&self) -> MeasuredBudgetQuantities {
70 self.budget_measurement
71 }
72
73 #[must_use]
74 pub fn into_parts(
75 self,
76 ) -> (
77 StepClaimFence,
78 Option<ExternalOperationId>,
79 StepResult,
80 Vec<ArtifactRef>,
81 MeasuredBudgetQuantities,
82 OffsetDateTime,
83 ) {
84 (
85 self.producer_claim_fence,
86 self.external_operation_id,
87 self.result,
88 self.artifacts,
89 self.budget_measurement,
90 self.observed_at,
91 )
92 }
93}