lichess_api/model/studies/
create.rs1use crate::model::{Body, Request};
2use serde::{Deserialize, Serialize};
3use serde_with::skip_serializing_none;
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize)]
6#[serde(rename_all = "lowercase")]
7pub enum Visibility {
8 Public,
9 Unlisted,
10 Private,
11}
12
13#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize)]
14#[serde(rename_all = "lowercase")]
15pub enum StudyUserSelection {
16 Nobody,
17 Owner,
18 Contributor,
19 Member,
20 Everyone,
21}
22
23#[skip_serializing_none]
24#[derive(Clone, Debug, Serialize)]
25pub struct CreateStudyForm {
26 pub name: String,
27 pub visibility: Visibility,
28 pub flair: Option<String>,
29 pub computer: StudyUserSelection,
30 pub explorer: StudyUserSelection,
31 pub cloneable: StudyUserSelection,
32 pub shareable: StudyUserSelection,
33 pub chat: StudyUserSelection,
34 pub sticky: Option<bool>,
35 pub description: Option<bool>,
36}
37
38#[derive(Default, Clone, Debug, Deserialize, Serialize)]
39pub struct CreateStudyResponse {
40 pub id: String,
41}
42
43#[derive(Default, Clone, Debug, Serialize)]
44pub struct PostQuery;
45
46pub type PostRequest = Request<PostQuery, CreateStudyForm>;
47
48impl PostRequest {
49 pub fn new(form: CreateStudyForm) -> Self {
50 Self::post("/api/study", None, Body::Form(form), None)
51 }
52}