lichess_api/model/board/
seek.rs

1use crate::model::{Color, Days, VariantKey};
2use serde::Serialize;
3
4#[derive(Clone, Debug, Serialize)]
5#[serde(rename_all = "camelCase")]
6pub struct PostQuery {
7    #[serde(flatten)]
8    pub seek_type: SeekType,
9    pub rated: bool,
10    pub variant: VariantKey,
11    pub color: Color,
12    pub rating_range: String,
13}
14
15#[derive(Clone, Debug, Serialize)]
16#[serde(untagged)]
17pub enum SeekType {
18    Correspondence { days: Days },
19    RealTime { time: u32, increment: u32 },
20}
21
22impl Default for PostQuery {
23    fn default() -> Self {
24        Self {
25            rated: false,
26            seek_type: SeekType::RealTime {
27                time: 5,
28                increment: 3,
29            },
30            variant: VariantKey::Standard,
31            color: Color::Random,
32            rating_range: "".to_string(),
33        }
34    }
35}
36
37pub type PostRequest = crate::model::Request<PostQuery>;
38
39impl PostRequest {
40    pub fn new(query: PostQuery) -> Self {
41        Self::post("/api/board/seek", query, None, None)
42    }
43}
44
45impl From<PostQuery> for PostRequest {
46    fn from(query: PostQuery) -> Self {
47        Self::new(query)
48    }
49}
50
51impl Default for PostRequest {
52    fn default() -> Self {
53        PostQuery::default().into()
54    }
55}