lichess-api 1.0.0

A client library for the Lichess API
Documentation
pub mod all;
pub mod arena;
pub mod join;
pub mod kick;
pub mod of_username;
pub mod pm_all;
pub mod quit;
pub mod request_accept;
pub mod request_decline;
pub mod requests;
pub mod search;
pub mod show;
pub mod swiss;
pub mod updates;
pub mod updates_of_team;
pub mod users;

use crate::model::LightUser;
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;

#[skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Team {
    pub id: String,
    pub name: String,
    pub description: Option<String>,
    pub flair: Option<String>,
    pub leader: Option<LightUser>,
    pub leaders: Option<Vec<LightUser>>,
    #[serde(rename = "nbMembers")]
    pub nb_members: Option<u32>,
    pub open: Option<bool>,
    pub joined: Option<bool>,
    pub requested: Option<bool>,
}

#[skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct LightTeam {
    pub id: String,
    pub name: String,
    pub flair: Option<String>,
}

#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct TeamPaginator<T> {
    pub current_page: u32,
    pub max_per_page: u32,
    pub current_page_results: Vec<T>,
    pub previous_page: Option<u32>,
    pub next_page: Option<u32>,
    pub nb_results: u32,
    pub nb_pages: u32,
}

pub type TeamPaginatorJson = TeamPaginator<Team>;

#[skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct TeamRequest {
    pub team_id: String,
    pub user_id: String,
    pub date: u64,
    pub message: Option<String>,
}

#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TeamRequestWithUser {
    pub request: TeamRequest,
    pub user: crate::model::users::User,
}

#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TeamUpdate {
    pub msg: TeamUpdateMessage,
    pub seen: bool,
}

#[skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TeamUpdateMessage {
    pub id: String,
    pub date: u64,
    pub sender: LightUser,
    pub team: LightTeam,
    pub text: String,
}

pub type TeamUpdatesPager = TeamPaginator<TeamUpdate>;

#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TeamUpdatesByTeamEntry {
    pub team: LightTeam,
    pub last: u64,
    pub unread: u32,
}

pub type TeamUpdatesByTeam = Vec<TeamUpdatesByTeamEntry>;

#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TeamUpdates {
    pub updates: TeamUpdatesPager,
    #[serde(rename = "byTeam")]
    pub by_team: TeamUpdatesByTeam,
}

#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TeamUpdatesOfTeam {
    pub team: LightTeam,
    pub subscribed: bool,
    pub updates: TeamUpdatesPager,
    #[serde(rename = "byTeam")]
    pub by_team: TeamUpdatesByTeam,
}