made_core/value_objects/ceremony/
planned_child.rs1use serde::{Deserialize, Serialize};
2use time::OffsetDateTime;
3
4use crate::value_objects::SessionRecollection;
5
6use super::{
7 CeremonyContext, CeremonyDefinitionDigest, CeremonyId, CeremonyLineage, CeremonyName,
8 CeremonyVersion, ChildPosition,
9};
10use crate::value_objects::BudgetAccountId;
11
12#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
13pub struct PlannedChild {
14 child_id: CeremonyId,
15 position: ChildPosition,
16 ceremony: CeremonyName,
17 version: CeremonyVersion,
18 digest: CeremonyDefinitionDigest,
19 context: CeremonyContext,
20 lineage: CeremonyLineage,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 recollection: Option<SessionRecollection>,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 budget_account_id: Option<BudgetAccountId>,
25 #[serde(with = "time::serde::rfc3339")]
26 opened_at: OffsetDateTime,
27}
28
29impl PlannedChild {
30 #[allow(clippy::too_many_arguments)]
31 #[must_use]
32 pub fn new(
33 child_id: CeremonyId,
34 position: ChildPosition,
35 ceremony: CeremonyName,
36 version: CeremonyVersion,
37 digest: CeremonyDefinitionDigest,
38 context: CeremonyContext,
39 lineage: CeremonyLineage,
40 recollection: Option<SessionRecollection>,
41 opened_at: OffsetDateTime,
42 ) -> Self {
43 Self {
44 child_id,
45 position,
46 ceremony,
47 version,
48 digest,
49 context,
50 lineage,
51 recollection,
52 budget_account_id: None,
53 opened_at,
54 }
55 }
56
57 #[must_use]
58 pub fn with_budget_account_id(mut self, account_id: Option<BudgetAccountId>) -> Self {
59 self.budget_account_id = account_id;
60 self
61 }
62 #[must_use]
63 pub fn child_id(&self) -> &CeremonyId {
64 &self.child_id
65 }
66 #[must_use]
67 pub const fn position(&self) -> ChildPosition {
68 self.position
69 }
70 #[must_use]
71 pub fn ceremony(&self) -> &CeremonyName {
72 &self.ceremony
73 }
74 #[must_use]
75 pub fn version(&self) -> &CeremonyVersion {
76 &self.version
77 }
78 #[must_use]
79 pub const fn digest(&self) -> CeremonyDefinitionDigest {
80 self.digest
81 }
82 #[must_use]
83 pub fn context(&self) -> &CeremonyContext {
84 &self.context
85 }
86 #[must_use]
87 pub fn lineage(&self) -> &CeremonyLineage {
88 &self.lineage
89 }
90 #[must_use]
91 pub fn recollection(&self) -> Option<&SessionRecollection> {
92 self.recollection.as_ref()
93 }
94 #[must_use]
95 pub fn budget_account_id(&self) -> Option<&BudgetAccountId> {
96 self.budget_account_id.as_ref()
97 }
98 #[must_use]
99 pub const fn opened_at(&self) -> OffsetDateTime {
100 self.opened_at
101 }
102}