lichess_api/model/puzzles/
racer.rs1use 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 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}