boxferry_compose/
deferred.rs1use boxferry_model::{Identifier, ModelError, ServiceExecutionEnvironment, Sourced};
3use std::collections::BTreeMap;
4
5#[derive(Clone, Debug, Default, Eq, PartialEq)]
11pub struct QuadletDeferredOptions {
12 services: BTreeMap<Identifier, Sourced<ServiceExecutionEnvironment>>,
13}
14impl QuadletDeferredOptions {
15 #[must_use]
17 pub const fn new() -> Self {
18 Self {
19 services: BTreeMap::new(),
20 }
21 }
22 pub fn add_service(
26 &mut self,
27 name: Identifier,
28 plan: Sourced<ServiceExecutionEnvironment>,
29 ) -> Result<(), ModelError> {
30 if self.services.contains_key(&name) {
31 return Err(ModelError::InvalidDeferred("duplicate service execution plan"));
32 }
33 self.services.insert(name, plan);
34 Ok(())
35 }
36 #[must_use]
38 pub const fn services(&self) -> &BTreeMap<Identifier, Sourced<ServiceExecutionEnvironment>> {
39 &self.services
40 }
41 #[must_use]
43 pub fn is_empty(&self) -> bool {
44 self.services.is_empty()
45 }
46}