swf_core/models/task/
try_task.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use super::{Map, TaskDefinition, TaskDefinitionFields};
5use crate::models::retry::OneOfRetryPolicyDefinitionOrReference;
6
7#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
9pub struct TryTaskDefinition {
10 #[serde(rename = "try")]
12 pub try_: Map<String, TaskDefinition>,
13
14 #[serde(rename = "catch")]
16 pub catch: ErrorCatcherDefinition,
17
18 #[serde(flatten)]
20 pub common: TaskDefinitionFields,
21}
22impl TryTaskDefinition {
23 pub fn new(try_: Map<String, TaskDefinition>, catch: ErrorCatcherDefinition) -> Self {
25 Self {
26 try_,
27 catch,
28 common: TaskDefinitionFields::new(),
29 }
30 }
31}
32
33#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
35pub struct ErrorCatcherDefinition {
36 #[serde(rename = "errors", skip_serializing_if = "Option::is_none")]
38 pub errors: Option<ErrorFilterDefinition>,
39
40 #[serde(rename = "as", skip_serializing_if = "Option::is_none")]
42 pub as_: Option<String>,
43
44 #[serde(rename = "when", skip_serializing_if = "Option::is_none")]
46 pub when: Option<String>,
47
48 #[serde(rename = "exceptWhen", skip_serializing_if = "Option::is_none")]
50 pub except_when: Option<String>,
51
52 #[serde(rename = "retry", skip_serializing_if = "Option::is_none")]
54 pub retry: Option<OneOfRetryPolicyDefinitionOrReference>,
55
56 #[serde(rename = "do", skip_serializing_if = "Option::is_none")]
58 pub do_: Option<Map<String, TaskDefinition>>,
59}
60
61#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
63pub struct ErrorFilterDefinition {
64 #[serde(rename = "with", skip_serializing_if = "Option::is_none")]
66 pub with: Option<ErrorFilterProperties>,
67}
68
69#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
71pub struct ErrorFilterProperties {
72 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
74 pub type_: Option<String>,
75
76 #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
78 pub status: Option<Value>,
79
80 #[serde(rename = "instance", skip_serializing_if = "Option::is_none")]
82 pub instance: Option<String>,
83
84 #[serde(rename = "title", skip_serializing_if = "Option::is_none")]
86 pub title: Option<String>,
87
88 #[serde(rename = "details", skip_serializing_if = "Option::is_none")]
90 pub detail: Option<String>,
91}