ggapi/structs/
progression.rs

1
2use serde::{
3    Deserialize,
4    Serialize,
5};
6
7use crate::{
8    phase::*,
9    phase_group::*,
10};
11
12/// Equivalent for start.gg Progression.
13///
14/// Each element in the structure is optional, allowing a user to only query values they want.
15/// Given each is an option and not a requirement, a method is included for each element with the same name.
16/// These methods will unwrap and return the proper value without any unwrapping or references needed.
17#[derive(Clone, Default, Serialize, Deserialize)]
18pub struct GGProgression {
19    
20    pub id:                     Option<i64>,
21
22    #[serde(rename(serialize = "originOrder",       deserialize = "originOrder"))]
23    pub origin_order:           Option<i64>,
24
25    #[serde(rename(serialize = "originPhase",       deserialize = "originPhase"))]
26    pub origin_phase:           Option<Box<GGPhase>>,
27
28    #[serde(rename(serialize = "originPhaseGroup",  deserialize = "originPhaseGroup"))]
29    pub origin_phase_group:     Option<Box<GGPhaseGroup>>,
30
31    #[serde(rename(serialize = "originPlacement",   deserialize = "originPlacement"))]
32    pub origin_placement:       Option<i64>,
33
34}
35
36impl GGProgression {
37
38    /// Returns the id of the progression.
39    ///
40    /// Returns zero if not set or wasn't queried.
41    pub fn id(&self) -> i64 {
42        let mut result: i64 = 0;
43        if self.id.is_some() {
44            result = self.id.unwrap().clone();
45        }
46        return result;
47    }
48
49    /// Returns the origin order of the progression.
50    ///
51    /// Returns zero if not set or wasn't queried.
52    pub fn origin_order(&self) -> i64 {
53        let mut result: i64 = 0;
54        if self.origin_order.is_some() {
55            result = self.origin_order.unwrap().clone();
56        }
57        return result;
58    }
59
60    /// Returns the origin phase of the progression.
61    ///
62    /// Returns an empty phase if not set or wasn't queried.
63    pub fn origin_phase(&self) -> GGPhase {
64        let mut result: GGPhase = Default::default();
65        if self.origin_phase.is_some() {
66            result = *self.origin_phase.as_ref().unwrap().clone();
67        }
68        return result;
69    }
70
71    /// Returns the origin phase group of the progression.
72    ///
73    /// Returns an empty phase group if not set or wasn't queried.
74    pub fn origin_phase_group(&self) -> GGPhaseGroup {
75        let mut result: GGPhaseGroup = Default::default();
76        if self.origin_phase_group.is_some() {
77            result = *self.origin_phase_group.as_ref().unwrap().clone();
78        }
79        return result;
80    }
81
82    /// Returns the origin placement of the progression.
83    ///
84    /// Returns zero if not set or wasn't queried.
85    pub fn origin_placement(&self) -> i64 {
86        let mut result: i64 = 0;
87        if self.origin_placement.is_some() {
88            result = self.origin_placement.unwrap().clone();
89        }
90        return result;
91    }
92
93}