artifacts/models/
my_account_details.rs

1use crate::models;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
5#[cfg_attr(feature = "specta", derive(specta::Type))]
6pub struct MyAccountDetails {
7    /// Username.
8    #[serde(rename = "username")]
9    pub username: String,
10    /// Email.
11    #[serde(rename = "email")]
12    pub email: String,
13    /// Member status.
14    #[serde(rename = "member")]
15    pub member: bool,
16    #[serde(
17        rename = "member_expiration",
18        default,
19        with = "::serde_with::rust::double_option",
20        skip_serializing_if = "Option::is_none"
21    )]
22    pub member_expiration: Option<Option<String>>,
23    /// Account status.
24    #[serde(rename = "status")]
25    pub status: models::AccountStatus,
26    /// Account badges.
27    #[serde(rename = "badges", skip_serializing_if = "Option::is_none")]
28    pub badges: Option<Vec<serde_json::Value>>,
29    /// Skins owned.
30    #[serde(rename = "skins")]
31    pub skins: Vec<serde_json::Value>,
32    /// Gems.
33    #[serde(rename = "gems")]
34    pub gems: i32,
35    /// Achievement points.
36    #[serde(rename = "achievements_points")]
37    pub achievements_points: i32,
38    /// Banned.
39    #[serde(rename = "banned")]
40    pub banned: bool,
41    /// Ban reason.
42    #[serde(rename = "ban_reason", skip_serializing_if = "Option::is_none")]
43    pub ban_reason: Option<String>,
44}
45
46impl MyAccountDetails {
47    pub fn new(
48        username: String,
49        email: String,
50        member: bool,
51        status: models::AccountStatus,
52        skins: Vec<serde_json::Value>,
53        gems: i32,
54        achievements_points: i32,
55        banned: bool,
56    ) -> MyAccountDetails {
57        MyAccountDetails {
58            username,
59            email,
60            member,
61            member_expiration: None,
62            status,
63            badges: None,
64            skins,
65            gems,
66            achievements_points,
67            banned,
68            ban_reason: None,
69        }
70    }
71}