artifacts/models/
my_account_details.rs1use 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 #[serde(rename = "username")]
9 pub username: String,
10 #[serde(rename = "email")]
12 pub email: String,
13 #[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 #[serde(rename = "status")]
25 pub status: models::AccountStatus,
26 #[serde(rename = "badges", skip_serializing_if = "Option::is_none")]
28 pub badges: Option<Vec<serde_json::Value>>,
29 #[serde(rename = "skins")]
31 pub skins: Vec<serde_json::Value>,
32 #[serde(rename = "gems")]
34 pub gems: i32,
35 #[serde(rename = "achievements_points")]
37 pub achievements_points: i32,
38 #[serde(rename = "banned")]
40 pub banned: bool,
41 #[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}