made_core/entities/ceremony_instance/fold/
start.rs1use std::collections::{BTreeMap, BTreeSet};
2
3use crate::entities::ceremony_events::CeremonyInstanceStarted;
4use crate::entities::CeremonyInstance;
5use crate::value_objects::StepExecutionRecord;
6use crate::value_objects::{StateIteration, StateVisit};
7
8impl CeremonyInstance {
9 #[must_use]
14 pub fn from_started(started: &CeremonyInstanceStarted) -> Self {
15 Self {
16 id: started.ceremony_id.clone(),
17 definition_name: started.definition_name.clone(),
18 definition_version: started.definition_version.clone(),
19 current_state: started.initial_state.clone(),
20 current_state_iteration: StateIteration::FIRST,
21 current_state_visit: StateVisit::FIRST,
22 step_records: started
23 .step_ids
24 .iter()
25 .map(|step_id| (step_id.clone(), StepExecutionRecord::pending()))
26 .collect(),
27 step_record_history: BTreeMap::new(),
28 interventions: Vec::new(),
29 guard_deferrals: Vec::new(),
30 guard_approvals: Vec::new(),
31 transitions: Vec::new(),
32 reasons: Vec::new(),
33 participant_bindings: BTreeMap::new(),
34 context: started.context.clone(),
35 recollection: None,
36 idempotency_keys: BTreeSet::new(),
37 created_at: started.created_at,
38 updated_at: started.created_at,
39 completed_at: None,
40 bound_definition: started.bound_definition,
41 lineage: started.lineage.clone(),
42 budget_account_id: started.budget_account_id.clone(),
43 child_groups: BTreeMap::new(),
44 lifecycle: crate::value_objects::CeremonyLifecycle::default(),
45 ceremony_deadline: started.ceremony_deadline,
46 state_deadline: started.state_deadline.clone(),
47 step_deadlines: BTreeMap::new(),
48 retired_deadline_claims: BTreeMap::new(),
49 late_step_results: BTreeMap::new(),
50 execution_receipt_links: BTreeMap::new(),
51 execution_receipt_adoptions: BTreeMap::new(),
52 }
53 }
54}