Skip to main content

lichess_api/model/puzzles/
racer.rs

1use crate::model::Request;
2use serde::{Deserialize, Serialize};
3use serde_with::skip_serializing_none;
4
5#[derive(Default, Clone, Debug, Serialize)]
6pub struct GetQuery;
7
8pub type GetRequest = Request<GetQuery>;
9
10impl GetRequest {
11    pub fn new(id: &str) -> Self {
12        let path = format!("/api/racer/{id}");
13        Self::get(path, None, None)
14    }
15}
16
17impl<S: AsRef<str>> From<S> for GetRequest {
18    fn from(s: S) -> Self {
19        Self::new(s.as_ref())
20    }
21}
22
23#[derive(Clone, Debug, Deserialize, Serialize)]
24#[serde(rename_all = "camelCase")]
25pub struct RaceResults {
26    pub id: String,
27    pub owner: String,
28    pub players: Vec<RacePlayer>,
29    pub puzzles: Vec<RacePuzzle>,
30    pub finishes_at: u64,
31    pub starts_at: u64,
32}
33
34#[skip_serializing_none]
35#[derive(Clone, Debug, Deserialize, Serialize)]
36#[serde(rename_all = "camelCase")]
37pub struct RacePlayer {
38    pub name: String,
39    pub score: i32,
40    pub id: Option<String>,
41    pub flair: Option<String>,
42    /// Deprecated: use `patron_color` instead.
43    pub patron: Option<bool>,
44    pub patron_color: Option<u32>,
45}
46
47#[derive(Clone, Debug, Deserialize, Serialize)]
48pub struct RacePuzzle {
49    pub id: String,
50    pub fen: String,
51    pub line: String,
52    pub rating: i32,
53}