lichess_api/model/puzzles/
activity.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Default, Clone, Debug, Serialize)]
4pub struct GetQuery {
5    pub max: u32,
6}
7
8pub type GetRequest = crate::model::Request<GetQuery>;
9
10impl GetRequest {
11    pub fn new(max_rounds: Option<u32>) -> Self {
12        let query = max_rounds.map(|max| GetQuery { max });
13        Self::get("/api/puzzle/activity", query, None)
14    }
15}
16
17impl Default for GetRequest {
18    fn default() -> Self {
19        Self::new(None)
20    }
21}
22
23impl From<u32> for GetRequest {
24    fn from(max: u32) -> Self {
25        Self::new(Some(max))
26    }
27}
28
29pub type Activity = PuzzleActivity;
30
31#[derive(Clone, Debug, Serialize, Deserialize)]
32#[serde(rename_all = "camelCase")]
33pub struct PuzzleActivity {
34    pub date: u64,
35    pub win: bool,
36    pub puzzle: Puzzle,
37}
38
39#[serde_with::skip_serializing_none]
40#[derive(Clone, Debug, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct Puzzle {
43    pub id: String,
44    pub fen: String,
45    pub last_move: Option<String>,
46    pub plays: i32,
47    pub rating: i32,
48    pub solution: Vec<String>,
49    pub themes: Vec<String>,
50}