Skip to main content

lichess_api/model/teams/
mod.rs

1pub 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}