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