Skip to main content

lichess_api/model/swiss_tournaments/
create.rs

1use crate::model::{Body, Request, VariantKey};
2use serde::Serialize;
3use serde_with::skip_serializing_none;
4
5#[skip_serializing_none]
6#[derive(Default, Clone, Debug, Serialize)]
7pub struct CreateSwissTournamentForm {
8    pub name: Option<String>,
9    #[serde(rename = "clock.limit")]
10    pub clock_limit: u32,
11    #[serde(rename = "clock.increment")]
12    pub clock_increment: u32,
13    #[serde(rename = "nbRounds")]
14    pub nb_rounds: u32,
15    #[serde(rename = "startsAt")]
16    pub starts_at: Option<i64>,
17    #[serde(rename = "roundInterval")]
18    pub round_interval: Option<i32>,
19    pub variant: Option<VariantKey>,
20    pub position: Option<String>,
21    pub description: Option<String>,
22    pub rated: Option<bool>,
23    pub password: Option<String>,
24    #[serde(rename = "forbiddenPairings")]
25    pub forbidden_pairings: Option<String>,
26    #[serde(rename = "manualPairings")]
27    pub manual_pairings: Option<String>,
28    #[serde(rename = "chatFor")]
29    pub chat_for: Option<u8>,
30    #[serde(rename = "conditions.minRating.rating")]
31    pub conditions_min_rating: Option<u32>,
32    #[serde(rename = "conditions.maxRating.rating")]
33    pub conditions_max_rating: Option<u32>,
34    #[serde(rename = "conditions.nbRatedGame.nb")]
35    pub conditions_nb_rated_game: Option<u32>,
36    #[serde(rename = "conditions.playYourGames")]
37    pub conditions_play_your_games: Option<bool>,
38    #[serde(rename = "conditions.allowList")]
39    pub conditions_allow_list: Option<String>,
40}
41
42#[derive(Default, Clone, Debug, Serialize)]
43pub struct PostQuery;
44
45pub type PostRequest = Request<PostQuery, CreateSwissTournamentForm>;
46
47impl PostRequest {
48    pub fn new(team_id: &str, form: CreateSwissTournamentForm) -> Self {
49        Self::post(
50            format!("/api/swiss/new/{team_id}"),
51            None,
52            Body::Form(form),
53            None,
54        )
55    }
56}