swf_builders/services/task/
switch.rs1use super::*;
2
3#[derive(Default)]
6pub struct SwitchTaskDefinitionBuilder {
7 task: SwitchTaskDefinition,
8}
9
10impl SwitchTaskDefinitionBuilder {
11 pub fn new() -> Self {
12 Self::default()
13 }
14
15 pub fn case_<F>(&mut self, name: &str, setup: F) -> &mut Self
17 where
18 F: FnOnce(&mut SwitchCaseDefinitionBuilder),
19 {
20 let mut builder = SwitchCaseDefinitionBuilder::new();
21 setup(&mut builder);
22 let case_def = builder.build();
23 self.task.switch.add(name.to_string(), case_def);
24 self
25 }
26}
27
28impl_task_definition_builder_base!(SwitchTaskDefinitionBuilder, task, |v| {
29 TaskDefinition::Switch(v)
30});
31
32pub struct SwitchCaseDefinitionBuilder {
34 case_def: SwitchCaseDefinition,
35}
36
37impl SwitchCaseDefinitionBuilder {
38 pub fn new() -> Self {
39 Self {
40 case_def: SwitchCaseDefinition::default(),
41 }
42 }
43
44 pub fn when(&mut self, when: &str) -> &mut Self {
46 self.case_def.when = Some(when.to_string());
47 self
48 }
49
50 pub fn then(&mut self, then: &str) -> &mut Self {
52 self.case_def.then = Some(then.to_string());
53 self
54 }
55
56 pub fn build(self) -> SwitchCaseDefinition {
58 self.case_def
59 }
60}
61
62impl Default for SwitchCaseDefinitionBuilder {
63 fn default() -> Self {
64 Self::new()
65 }
66}