competitionlib/dto/
competition_request.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
use chrono::NaiveDateTime;
use common::enums::activity_type::ActivityType;
use common::enums::registration_type::RegistrationType;
use common::enums::status::Status;
use common::model::form::Form;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use common::utils::serialize_option_naive_date;
use crate::dto::division_request::DivisionRequest;
use crate::dto::game_request::GameRequest;
use crate::enums::allowed_until_type::AllowedUntilType;
use crate::enums::competition_visibility::CompetitionVisibility;
use crate::enums::participant_type::ParticipantType;
use crate::enums::participation_type::ParticipationType;
use crate::enums::tournament_system_type::TournamentSystemType;
use crate::jsonb::certificate_kind::CertificateKind;
use crate::jsonb::education_benefit::EducationBenefits;
use crate::jsonb::organizator::Organizator;
use crate::jsonb::sponsor::Sponsor;
use crate::jsonb::prize::Prize;
use crate::jsonb::ticket_kind::TicketKind;

#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct CompetitionRequest {
    pub id: Option<Uuid>,
    pub title: String,
    pub logo: Option<String>,
    pub place: Option<diesel_json::Json<serde_json::Value>>,
    pub sponsor: Option<diesel_json::Json<Vec<Sponsor>>>,
    pub organizator: Option<diesel_json::Json<Vec<Organizator>>>,
    pub prizes: Option<diesel_json::Json<Vec<Prize>>>,
    pub status: Status,
    pub general_rules: String,
    pub cover_image: Option<String>,
    pub identity_color: String,
    pub visibility: CompetitionVisibility,
    pub available_below: Option<Uuid>,
    pub about: String,
    pub education_benefits: Option<diesel_json::Json<Vec<EducationBenefits>>>,
    pub specific_rules: Option<String>,
    pub allowed_until: Option<AllowedUntilType>,
    pub days_before: Option<i32>,
    #[serde(default)]
    #[serde(with = "serialize_option_naive_date")]
    pub date: Option<NaiveDateTime>,
    pub participation_type: Option<ParticipationType>,
    pub form: Option<diesel_json::Json<Vec<Form>>>,
    pub organization: Option<Uuid>,
    pub registration_type: RegistrationType,
    pub target_participants: Option<Vec<ParticipantType>>,
    pub category: Option<ActivityType>,
    pub tournament_system_type: Option<TournamentSystemType>,
    pub tickets: Option<Vec<TicketKind>>,
    pub divisions: Option<Vec<DivisionRequest>>,
    pub schedules: Option<Vec<GameRequest>>,
    pub certificates: Option<Vec<CertificateKind>>,
}