Skip to main content

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 * Contact: devrel@onesignal.com
7 * Generated by: https://openapi-generator.tech
8 */
9
10
11
12
13#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
14pub struct Filter {
15    /// Required. Name of the field to use as the first operand in the filter expression.
16    #[serde(rename = "field", skip_serializing_if = "Option::is_none")]
17    pub field: Option<String>,
18    /// If `field` is `tag`, this field is *required* to specify `key` inside the tags.
19    #[serde(rename = "key", skip_serializing_if = "Option::is_none")]
20    pub key: Option<String>,
21    /// Constant value to use as the second operand in the filter expression. This value is *required* when the relation operator is a binary operator. For `in_array` and `not_in_array` relations, provide a comma-separated list of up to 20 values.
22    #[serde(rename = "value", skip_serializing_if = "Option::is_none")]
23    pub value: Option<String>,
24    /// If `field` is session-related, this is *required* to specify the number of hours before or after the user's session.
25    #[serde(rename = "hours_ago", skip_serializing_if = "Option::is_none")]
26    pub hours_ago: Option<String>,
27    /// If `field` is `location`, this will specify the radius in meters from a provided location point. Use with `lat` and `long`.
28    #[serde(rename = "radius", skip_serializing_if = "Option::is_none")]
29    pub radius: Option<f32>,
30    /// If `field` is `location`, this is *required* to specify the user's latitude.
31    #[serde(rename = "lat", skip_serializing_if = "Option::is_none")]
32    pub lat: Option<f32>,
33    /// If `field` is `location`, this is *required* to specify the user's longitude.
34    #[serde(rename = "long", skip_serializing_if = "Option::is_none")]
35    pub long: Option<f32>,
36    /// Required. Operator of a filter expression.
37    #[serde(rename = "relation", skip_serializing_if = "Option::is_none")]
38    pub relation: Option<RelationType>,
39}
40
41impl Filter {
42    pub fn new() -> Filter {
43        Filter {
44            field: None,
45            key: None,
46            value: None,
47            hours_ago: None,
48            radius: None,
49            lat: None,
50            long: None,
51            relation: None,
52        }
53    }
54}
55
56/// Required. Operator of a filter expression.
57#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
58pub enum RelationType {
59    #[serde(rename = ">")]
60    Greater_Than,
61    #[serde(rename = "<")]
62    Less_Than,
63    #[serde(rename = "=")]
64    Equal,
65    #[serde(rename = "!=")]
66    Not_Equal,
67    #[serde(rename = "exists")]
68    Exists,
69    #[serde(rename = "not_exists")]
70    NotExists,
71    #[serde(rename = "time_elapsed_gt")]
72    TimeElapsedGt,
73    #[serde(rename = "time_elapsed_lt")]
74    TimeElapsedLt,
75    #[serde(rename = "in_array")]
76    InArray,
77    #[serde(rename = "not_in_array")]
78    NotInArray,
79}
80
81impl Default for RelationType {
82    fn default() -> RelationType {
83        Self::Greater_Than
84    }
85}
86