#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Condition {
#[serde(rename = "field")]
pub field: Field,
#[serde(rename = "key", skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(rename = "not", skip_serializing_if = "Option::is_none")]
pub not: Option<bool>,
#[serde(rename = "operation")]
pub operation: Operation,
#[serde(rename = "expectedValue", skip_serializing_if = "Option::is_none")]
pub expected_value: Option<String>,
#[serde(rename = "order", skip_serializing_if = "Option::is_none")]
pub order: Option<i64>,
}
impl Condition {
pub fn new(field: Field, operation: Operation) -> Condition {
Condition {
field,
key: None,
not: None,
operation,
expected_value: None,
order: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Field {
#[serde(rename = "message")]
Message,
#[serde(rename = "alias")]
Alias,
#[serde(rename = "description")]
Description,
#[serde(rename = "source")]
Source,
#[serde(rename = "entity")]
Entity,
#[serde(rename = "tags")]
Tags,
#[serde(rename = "actions")]
Actions,
#[serde(rename = "extra-properties")]
ExtraProperties,
#[serde(rename = "recipients")]
Recipients,
#[serde(rename = "teams")]
Teams,
#[serde(rename = "priority")]
Priority,
#[serde(rename = "details")]
Details,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Operation {
#[serde(rename = "matches")]
Matches,
#[serde(rename = "contains")]
Contains,
#[serde(rename = "starts-with")]
StartsWith,
#[serde(rename = "ends-with")]
EndsWith,
#[serde(rename = "equals")]
Equals,
#[serde(rename = "contains-key")]
ContainsKey,
#[serde(rename = "contains-value")]
ContainsValue,
#[serde(rename = "greater-than")]
GreaterThan,
#[serde(rename = "less-than")]
LessThan,
#[serde(rename = "is-empty")]
IsEmpty,
#[serde(rename = "equals-ignore-whitespace")]
EqualsIgnoreWhitespace,
}