use serde::{Deserialize, Serialize};
use serde_json::Value;
use super::{Map, TaskDefinition, TaskDefinitionFields};
use crate::models::retry::OneOfRetryPolicyDefinitionOrReference;
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct TryTaskDefinition {
#[serde(rename = "try")]
pub try_: Map<String, TaskDefinition>,
#[serde(rename = "catch")]
pub catch: ErrorCatcherDefinition,
#[serde(flatten)]
pub common: TaskDefinitionFields,
}
impl TryTaskDefinition {
pub fn new(try_: Map<String, TaskDefinition>, catch: ErrorCatcherDefinition) -> Self {
Self {
try_,
catch,
common: TaskDefinitionFields::new(),
}
}
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct ErrorCatcherDefinition {
#[serde(rename = "errors", skip_serializing_if = "Option::is_none")]
pub errors: Option<ErrorFilterDefinition>,
#[serde(rename = "as", skip_serializing_if = "Option::is_none")]
pub as_: Option<String>,
#[serde(rename = "when", skip_serializing_if = "Option::is_none")]
pub when: Option<String>,
#[serde(rename = "exceptWhen", skip_serializing_if = "Option::is_none")]
pub except_when: Option<String>,
#[serde(rename = "retry", skip_serializing_if = "Option::is_none")]
pub retry: Option<OneOfRetryPolicyDefinitionOrReference>,
#[serde(rename = "do", skip_serializing_if = "Option::is_none")]
pub do_: Option<Map<String, TaskDefinition>>,
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct ErrorFilterDefinition {
#[serde(rename = "with", skip_serializing_if = "Option::is_none")]
pub with: Option<ErrorFilterProperties>,
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct ErrorFilterProperties {
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(rename = "status", skip_serializing_if = "Option::is_none")]
pub status: Option<Value>,
#[serde(rename = "instance", skip_serializing_if = "Option::is_none")]
pub instance: Option<String>,
#[serde(rename = "title", skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "details", skip_serializing_if = "Option::is_none")]
pub detail: Option<String>,
}