lichess_api/model/board/
seek.rs1use 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}