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