lichess_api/model/puzzles/
storm_dashboard.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Default, Clone, Debug, Serialize)]
4pub struct GetQuery {
5    pub days: u32,
6}
7
8pub type GetRequest = crate::model::Request<GetQuery>;
9
10impl GetRequest {
11    pub fn new(username: &str, days: Option<u32>) -> Self {
12        let path = format!("/api/storm/dashboard/{}", username);
13        let query = days.map(|x| GetQuery { days: x });
14        Self::get(path, query, None)
15    }
16}
17
18impl<S: AsRef<str>> From<S> for GetRequest {
19    fn from(s: S) -> Self {
20        Self::new(s.as_ref(), None)
21    }
22}
23
24pub type Dashboard = StormDashboard;
25
26#[derive(Clone, Debug, Serialize, Deserialize)]
27pub struct StormDashboard {
28    high: High,
29    days: Vec<Day>,
30}
31
32#[derive(Clone, Debug, Serialize, Deserialize)]
33pub struct High {
34    #[serde(rename = "allTime")]
35    all_time: i64,
36    day: i64,
37    month: i64,
38    week: i64,
39}
40
41#[derive(Clone, Debug, Serialize, Deserialize)]
42pub struct Day {
43    #[serde(rename = "_id")]
44    id: String,
45    combo: i64,
46    errors: i64,
47    highest: i64,
48    moves: i64,
49    runs: i64,
50    score: i64,
51    time: i64,
52}