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: 5.2.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    /// Required. Name of the field to use as the first operand in the filter expression.
17    #[serde(rename = "field", skip_serializing_if = "Option::is_none")]
18    pub field: Option<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    /// If `field` is session-related, this is *required* to specify the number of hours before or after the user's session.
26    #[serde(rename = "hours_ago", skip_serializing_if = "Option::is_none")]
27    pub hours_ago: Option<String>,
28    /// If `field` is `location`, this will specify the radius in meters from a provided location point. Use with `lat` and `long`.
29    #[serde(rename = "radius", skip_serializing_if = "Option::is_none")]
30    pub radius: Option<f32>,
31    /// If `field` is `location`, this is *required* to specify the user's latitude.
32    #[serde(rename = "lat", skip_serializing_if = "Option::is_none")]
33    pub lat: Option<f32>,
34    /// If `field` is `location`, this is *required* to specify the user's longitude.
35    #[serde(rename = "long", skip_serializing_if = "Option::is_none")]
36    pub long: Option<f32>,
37    /// Required. Operator of a filter expression.
38    #[serde(rename = "relation", skip_serializing_if = "Option::is_none")]
39    pub relation: Option<RelationType>,
40}
41
42impl Filter {
43    pub fn new() -> Filter {
44        Filter {
45            field: None,
46            key: None,
47            value: None,
48            hours_ago: None,
49            radius: None,
50            lat: None,
51            long: None,
52            relation: None,
53        }
54    }
55}
56
57/// Required. Operator of a filter expression.
58#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
59pub enum RelationType {
60    #[serde(rename = ">")]
61    Greater_Than,
62    #[serde(rename = "<")]
63    Less_Than,
64    #[serde(rename = "=")]
65    Equal,
66    #[serde(rename = "!=")]
67    Not_Equal,
68    #[serde(rename = "exists")]
69    Exists,
70    #[serde(rename = "not_exists")]
71    NotExists,
72    #[serde(rename = "time_elapsed_gt")]
73    TimeElapsedGt,
74    #[serde(rename = "time_elapsed_lt")]
75    TimeElapsedLt,
76}
77
78impl Default for RelationType {
79    fn default() -> RelationType {
80        Self::Greater_Than
81    }
82}
83