lichess_api/model/games/export/
by_user.rs

1use super::Base;
2use crate::model::{Color, PerfType};
3use serde::Serialize;
4
5#[derive(Default, Clone, Debug, Serialize)]
6pub struct GetQuery {
7    #[serde(flatten)]
8    pub base: Base,
9    pub since: Option<u64>,
10    pub until: Option<u64>,
11    pub max: u64,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub vs: Option<String>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub rated: Option<bool>,
16    // Can be null.
17    pub perf_type: Option<PerfType>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub color: Option<Color>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub analysed: Option<bool>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub ongoing: Option<bool>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub finished: Option<bool>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub last_fen: Option<bool>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub sort: Option<Sort>,
30}
31
32#[derive(Clone, Debug, PartialEq, Eq, Serialize)]
33#[serde(rename_all = "camelCase")]
34pub enum Sort {
35    DateAsc,
36    DateDesc,
37}
38
39pub type GetRequest = crate::model::Request<GetQuery>;
40
41impl GetRequest {
42    pub fn new(username: &str, query: GetQuery) -> Self {
43        Self::get(format!("/api/games/user/{username}"), query, None)
44    }
45}