lichess_api/model/puzzles/
dashboard.rs

1use serde::{Deserialize, Serialize};
2
3use std::collections::HashMap;
4
5#[derive(Default, Clone, Debug, Serialize)]
6pub struct GetQuery;
7
8pub type GetRequest = crate::model::Request<GetQuery>;
9
10impl GetRequest {
11    pub fn new(days: u32) -> Self {
12        Self::get(format!("/api/puzzle/dashboard/{days}"), None, None)
13    }
14}
15
16impl From<u32> for GetRequest {
17    fn from(days: u32) -> Self {
18        Self::new(days)
19    }
20}
21
22pub type Dashboard = PuzzleDashboard;
23
24#[derive(Clone, Debug, Serialize, Deserialize)]
25pub struct PuzzleDashboard {
26    days: i64,
27    global: PuzzlePerformance,
28    themes: HashMap<String, Theme>,
29}
30
31#[derive(Clone, Debug, Serialize, Deserialize)]
32pub struct Theme {
33    results: PuzzlePerformance,
34    theme: String,
35}
36
37#[derive(Clone, Debug, Serialize, Deserialize)]
38pub struct PuzzlePerformance {
39    #[serde(rename = "firstWins")]
40    first_wins: i64,
41    nb: i64,
42    performance: i64,
43    #[serde(rename = "puzzleRatingAvg")]
44    puzzle_rating_avg: i64,
45    #[serde(rename = "replayWins")]
46    replay_wins: i64,
47}