apple_search_ads/objects/
condition.rs

1// https://developer.apple.com/documentation/apple_search_ads/condition
2
3use serde::{Deserialize, Serialize};
4
5//
6#[derive(Serialize, Deserialize, Debug, Clone)]
7pub struct Condition {
8    pub field: Box<str>,
9
10    pub operator: ConditionOperator,
11
12    pub values: Vec<Box<str>>,
13}
14impl Condition {
15    pub fn new(
16        field: impl AsRef<str>,
17        operator: ConditionOperator,
18        values: Vec<impl AsRef<str>>,
19    ) -> Self {
20        Self {
21            field: field.as_ref().into(),
22            operator,
23            values: values
24                .into_iter()
25                .map(|x| x.as_ref().into())
26                .collect::<Vec<_>>(),
27        }
28    }
29}
30
31#[derive(Serialize, Deserialize, Debug, Clone)]
32pub enum ConditionOperator {
33    #[allow(clippy::upper_case_acronyms)]
34    EQUALS,
35    #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
36    GREATER_THAN,
37    #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
38    LESS_THAN,
39    #[allow(clippy::upper_case_acronyms)]
40    IN,
41    #[allow(clippy::upper_case_acronyms)]
42    LIKE,
43    #[allow(clippy::upper_case_acronyms)]
44    STARTSWITH,
45    #[allow(clippy::upper_case_acronyms)]
46    CONTAINS,
47    #[allow(clippy::upper_case_acronyms)]
48    ENDSWITH,
49    #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
50    NOT_EQUALS,
51    #[allow(clippy::upper_case_acronyms)]
52    IS,
53    #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
54    CONTAINS_ANY,
55    #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
56    CONTAINS_ALL,
57}