rs_pixel/response/
guild_response.rs1use crate::types::game_type::GameType;
2use serde::{Deserialize, Deserializer, Serialize};
3use std::collections::HashMap;
4
5#[derive(Serialize, Deserialize, Debug)]
6pub struct GuildResponse {
7 pub success: bool,
8 pub guild: Option<Guild>,
9}
10
11#[derive(Serialize, Deserialize, Debug)]
12pub struct Guild {
13 #[serde(rename = "_id")]
14 pub id: String,
15 pub created: i64,
16 pub exp: i64,
17 #[serde(rename = "publiclyListed", default = "Default::default")]
18 pub publicly_listed: bool,
19 #[serde(default = "Default::default")]
20 pub joinable: bool,
21 pub name: String,
22 #[serde(default = "Default::default")]
23 pub description: String,
24 pub tag: String,
25 #[serde(rename = "tagColor")]
26 pub tag_color: String,
27 pub members: Vec<Member>,
29 pub ranks: Vec<Rank>,
30 #[serde(rename = "preferredGames")]
31 pub preferred_games: Vec<GameType>,
32 #[serde(rename = "guildExpByGameType")]
33 pub guild_exp_by_game_type: HashMap<GameType, i64>,
34 pub achievements: HashMap<GuildAchievement, i64>,
35 pub coins: i64,
36 #[serde(rename = "coinsEver")]
37 pub coins_ever: i64,
38 #[serde(rename = "legacyRanking")]
39 pub legacy_ranking: Option<i64>,
40}
41
42#[derive(Serialize, Deserialize, Debug)]
43pub struct Member {
44 pub uuid: String,
45 pub rank: String,
46 pub joined: i64,
47 #[serde(rename = "expHistory")]
48 pub exp_history: HashMap<String, i64>,
49}
50
51#[derive(Serialize, Deserialize, Debug)]
52pub struct Rank {
53 pub name: String,
54 #[serde(deserialize_with = "deserialize_null_default")]
55 pub tag: String,
56 pub priority: i64,
57 pub default: bool,
58 pub created: i64,
59}
60
61#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash)]
62#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
63pub enum GuildAchievement {
64 ExperienceKings,
65 OnlinePlayers,
66 Prestige,
67 Winners,
68}
69
70fn deserialize_null_default<'de, D, T>(deserializer: D) -> Result<T, D::Error>
71where
72 T: Default + Deserialize<'de>,
73 D: Deserializer<'de>,
74{
75 let opt = Option::deserialize(deserializer)?;
76 Ok(opt.unwrap_or_default())
77}