Skip to main content

lichess_api/model/broadcasts/
create_round.rs

1use crate::model::broadcasts::{BroadcastCustomPointsPerColor, BroadcastCustomScoring};
2use crate::model::{Body, Request};
3use serde::Serialize;
4use serde_with::skip_serializing_none;
5
6#[skip_serializing_none]
7#[derive(Default, Clone, Debug, Serialize)]
8pub struct BroadcastRoundForm {
9    pub name: String,
10    #[serde(rename = "syncUrl")]
11    pub sync_url: Option<String>,
12    #[serde(rename = "syncUrls")]
13    pub sync_urls: Option<String>,
14    #[serde(rename = "syncIds")]
15    pub sync_ids: Option<String>,
16    #[serde(rename = "syncUsers")]
17    pub sync_users: Option<String>,
18    #[serde(rename = "onlyRound")]
19    pub only_round: Option<i32>,
20    pub slices: Option<String>,
21    #[serde(rename = "syncSource")]
22    pub sync_source: Option<String>,
23    #[serde(rename = "startsAt")]
24    pub starts_at: Option<i64>,
25    #[serde(rename = "startsAfterPrevious")]
26    pub starts_after_previous: Option<bool>,
27    pub delay: Option<i32>,
28    pub status: Option<String>,
29    pub rated: Option<bool>,
30    #[serde(rename = "customScoring")]
31    pub custom_scoring: Option<BroadcastCustomScoring>,
32    #[serde(rename = "teamCustomScoring")]
33    pub team_custom_scoring: Option<BroadcastCustomPointsPerColor>,
34    pub period: Option<i32>,
35}
36
37#[derive(Default, Clone, Debug, Serialize)]
38pub struct PostQuery;
39
40pub type PostRequest = Request<PostQuery, BroadcastRoundForm>;
41
42impl PostRequest {
43    pub fn new(broadcast_tournament_id: &str, form: BroadcastRoundForm) -> Self {
44        Self::post(
45            format!("/broadcast/{broadcast_tournament_id}/new"),
46            None,
47            Body::Form(form),
48            None,
49        )
50    }
51}