journallib/dto/
lesson_with_homeworks.rs1use 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}