journallib/dto/
lesson_with_homeworks.rs

1use common::jsonb::assignment::quest_details::QuestDetails;
2use chrono::NaiveDateTime;
3use common::enums::status::Status;
4use common::utils::serialize_option_naive_date;
5use serde::{Deserialize, Serialize};
6use std::collections::HashMap;
7use uuid::Uuid;
8
9use crate::dto::homework_request::HomeworkRequest;
10use crate::enums::lesson_type::LessonType;
11
12#[derive(Serialize, Deserialize, Clone)]
13#[serde(rename_all = "camelCase")]
14pub struct LessonWithHomeworks {
15    pub id: Option<Uuid>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub comment: Option<String>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub importance_default: Option<i32>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    #[serde(rename = "type")]
22    pub lesson_type: Option<LessonType>,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub curriculum: Option<Uuid>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub test: Option<Uuid>,
27    #[serde(default)]
28    #[serde(with = "serialize_option_naive_date")]
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub date: Option<NaiveDateTime>,
31    pub journal: Uuid,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub status: Option<Status>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub in_schedule: Option<String>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub room: Option<Uuid>,
38    pub homeworks: Vec<HomeworkRequest>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub slot: Option<Uuid>,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub removed_sections: Option<Vec<Uuid>>,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub quest_details: Option<HashMap<Uuid, QuestDetails>>,
45}