lichess_api/model/teams/
mod.rs1pub mod all;
2pub mod arena;
3pub mod join;
4pub mod kick;
5pub mod of_username;
6pub mod pm_all;
7pub mod quit;
8pub mod request_accept;
9pub mod request_decline;
10pub mod requests;
11pub mod search;
12pub mod show;
13pub mod swiss;
14pub mod updates;
15pub mod updates_of_team;
16pub mod users;
17
18use crate::model::LightUser;
19use serde::{Deserialize, Serialize};
20use serde_with::skip_serializing_none;
21
22#[skip_serializing_none]
23#[derive(Clone, Debug, Deserialize, Serialize)]
24pub struct Team {
25 pub id: String,
26 pub name: String,
27 pub description: Option<String>,
28 pub flair: Option<String>,
29 pub leader: Option<LightUser>,
30 pub leaders: Option<Vec<LightUser>>,
31 #[serde(rename = "nbMembers")]
32 pub nb_members: Option<u32>,
33 pub open: Option<bool>,
34 pub joined: Option<bool>,
35 pub requested: Option<bool>,
36}
37
38#[skip_serializing_none]
39#[derive(Clone, Debug, Deserialize, Serialize)]
40pub struct LightTeam {
41 pub id: String,
42 pub name: String,
43 pub flair: Option<String>,
44}
45
46#[derive(Clone, Debug, Deserialize, Serialize)]
47#[serde(rename_all = "camelCase")]
48pub struct TeamPaginator<T> {
49 pub current_page: u32,
50 pub max_per_page: u32,
51 pub current_page_results: Vec<T>,
52 pub previous_page: Option<u32>,
53 pub next_page: Option<u32>,
54 pub nb_results: u32,
55 pub nb_pages: u32,
56}
57
58pub type TeamPaginatorJson = TeamPaginator<Team>;
59
60#[skip_serializing_none]
61#[derive(Clone, Debug, Deserialize, Serialize)]
62#[serde(rename_all = "camelCase")]
63pub struct TeamRequest {
64 pub team_id: String,
65 pub user_id: String,
66 pub date: u64,
67 pub message: Option<String>,
68}
69
70#[derive(Clone, Debug, Deserialize, Serialize)]
71pub struct TeamRequestWithUser {
72 pub request: TeamRequest,
73 pub user: crate::model::users::User,
74}
75
76#[derive(Clone, Debug, Deserialize, Serialize)]
77pub struct TeamUpdate {
78 pub msg: TeamUpdateMessage,
79 pub seen: bool,
80}
81
82#[skip_serializing_none]
83#[derive(Clone, Debug, Deserialize, Serialize)]
84pub struct TeamUpdateMessage {
85 pub id: String,
86 pub date: u64,
87 pub sender: LightUser,
88 pub team: LightTeam,
89 pub text: String,
90}
91
92pub type TeamUpdatesPager = TeamPaginator<TeamUpdate>;
93
94#[derive(Clone, Debug, Deserialize, Serialize)]
95pub struct TeamUpdatesByTeamEntry {
96 pub team: LightTeam,
97 pub last: u64,
98 pub unread: u32,
99}
100
101pub type TeamUpdatesByTeam = Vec<TeamUpdatesByTeamEntry>;
102
103#[derive(Clone, Debug, Deserialize, Serialize)]
104pub struct TeamUpdates {
105 pub updates: TeamUpdatesPager,
106 #[serde(rename = "byTeam")]
107 pub by_team: TeamUpdatesByTeam,
108}
109
110#[derive(Clone, Debug, Deserialize, Serialize)]
111pub struct TeamUpdatesOfTeam {
112 pub team: LightTeam,
113 pub subscribed: bool,
114 pub updates: TeamUpdatesPager,
115 #[serde(rename = "byTeam")]
116 pub by_team: TeamUpdatesByTeam,
117}