onesignal_rust_api/models/
filter.rs

1/*
2 * OneSignal
3 *
4 * A powerful way to send personalized messages at scale and build effective customer engagement strategies. Learn more at onesignal.com
5 *
6 * The version of the OpenAPI document: 1.4.1
7 * Contact: devrel@onesignal.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12
13
14#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
15pub struct Filter {
16    /// Name of the field to use as the first operand in the filter expression.
17    #[serde(rename = "field")]
18    pub field: String,
19    /// If `field` is `tag`, this field is *required* to specify `key` inside the tags.
20    #[serde(rename = "key", skip_serializing_if = "Option::is_none")]
21    pub key: Option<String>,
22    /// Constant value to use as the second operand in the filter expression. This value is *required* when the relation operator is a binary operator.
23    #[serde(rename = "value", skip_serializing_if = "Option::is_none")]
24    pub value: Option<String>,
25    /// Operator of a filter expression.
26    #[serde(rename = "relation")]
27    pub relation: RelationType,
28}
29
30impl Filter {
31    pub fn new(field: String, relation: RelationType) -> Filter {
32        Filter {
33            field,
34            key: None,
35            value: None,
36            relation,
37        }
38    }
39}
40
41/// Operator of a filter expression.
42#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
43pub enum RelationType {
44    #[serde(rename = ">")]
45    Greater_Than,
46    #[serde(rename = "<")]
47    Less_Than,
48    #[serde(rename = "=")]
49    Equal,
50    #[serde(rename = "!=")]
51    Not_Equal,
52    #[serde(rename = "exists")]
53    Exists,
54    #[serde(rename = "not_exists")]
55    NotExists,
56    #[serde(rename = "time_elapsed_gt")]
57    TimeElapsedGt,
58    #[serde(rename = "time_elapsed_lt")]
59    TimeElapsedLt,
60}
61
62impl Default for RelationType {
63    fn default() -> RelationType {
64        Self::Greater_Than
65    }
66}
67