diff --git a/src/absence/absence.rs b/src/absence/absence.rs index f5ce811..5a8b2d4 100644 --- a/src/absence/absence.rs +++ b/src/absence/absence.rs @@ -1,87 +1,6 @@ -use crate::{Hour, StdType, StdTypeNullable}; -use chrono::{DateTime, FixedOffset}; +use crate::{AbsentType, StdTypeAbbrevNullable}; use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct AbsenceOverviewResponse { - pub percentage_threshold: f64, //TODO: cutom type (u8) - pub absences: Vec, - pub absences_per_subject: Option>, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct AbsenceDay { - pub date: chrono::DateTime, - pub unsolved: u16, - pub ok: u16, - pub missed: u16, - pub late: u16, - pub soon: u16, - pub school: u16, - pub distance_teaching: u16, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct SubjectAbsence { - pub subject_name: String, - pub lessons_count: u16, - pub base: u16, - pub late: u16, - pub soon: u16, - pub school: u16, - pub distance_teaching: u16, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct StudentTimetableAbsenceResponse { - pub student: Option, - pub days: Vec, - pub absent_type_options: Vec, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct AbsenceTypeOption { - pub absent_type: AbsentType, - pub absent_kind_enabled: bool, - pub absent_kind_required: bool, - pub absent_note_enabled: bool, - pub next_absent_type: AbsentType, - pub absent_kinds: Vec, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub enum AbsentType { - Absent, - AbsentLate, - AbsentMiss, - AbsentOk, - AbsentSchool, - AbsentSoon, - DistanceTeaching, - NoAbsent, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct AbsenceSubject { - pub id: String, - pub abbrev: Option, - pub name: String, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct AbsenceDayResponse { - pub date: DateTime, - pub absences: Vec, -} - #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct Absence { @@ -94,27 +13,5 @@ pub struct Absence { pub absent_kind_id: Option, pub notice: Option, pub student_id: Option, - pub subject: Option, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct ExcuseAbsenceResponse { - pub absences: Vec, - pub hours: Vec, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct AbsenceRecord { - pub minutes: i64, - pub absent_type: AbsentType, - pub hour_id: Option, - pub date: DateTime, - pub start: i64, - pub duration: i64, - pub absent_kind_id: Option, - pub notice: Option, - pub student_id: Option, - pub apology_id: Option, + pub subject: Option, } diff --git a/src/absence/absence_day.rs b/src/absence/absence_day.rs new file mode 100644 index 0000000..b89e2d5 --- /dev/null +++ b/src/absence/absence_day.rs @@ -0,0 +1,15 @@ +use chrono::{DateTime, FixedOffset}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct AbsenceDay { + pub date: DateTime, + pub unsolved: u16, + pub ok: u16, + pub missed: u16, + pub late: u16, + pub soon: u16, + pub school: u16, + pub distance_teaching: u16, +} diff --git a/src/absence/absence_day_response.rs b/src/absence/absence_day_response.rs new file mode 100644 index 0000000..5072264 --- /dev/null +++ b/src/absence/absence_day_response.rs @@ -0,0 +1,10 @@ +use crate::Absence; +use chrono::{DateTime, FixedOffset}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct AbsenceDayResponse { + pub date: DateTime, + pub absences: Vec, +} diff --git a/src/absence/absence_overview_response.rs b/src/absence/absence_overview_response.rs new file mode 100644 index 0000000..56d5975 --- /dev/null +++ b/src/absence/absence_overview_response.rs @@ -0,0 +1,10 @@ +use crate::{AbsenceDay, SubjectAbsence}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct AbsenceOverviewResponse { + pub percentage_threshold: f64, //TODO: cutom type (u8) + pub absences: Vec, + pub absences_per_subject: Option>, +} diff --git a/src/absence/absence_record.rs b/src/absence/absence_record.rs new file mode 100644 index 0000000..e1fdd82 --- /dev/null +++ b/src/absence/absence_record.rs @@ -0,0 +1,18 @@ +use crate::AbsentType; +use chrono::{DateTime, FixedOffset}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct AbsenceRecord { + pub minutes: i64, + pub absent_type: AbsentType, + pub hour_id: Option, + pub date: DateTime, + pub start: i64, + pub duration: i64, + pub absent_kind_id: Option, + pub notice: Option, + pub student_id: Option, + pub apology_id: Option, +} diff --git a/src/absence/absence_type_option.rs b/src/absence/absence_type_option.rs new file mode 100644 index 0000000..9d4495e --- /dev/null +++ b/src/absence/absence_type_option.rs @@ -0,0 +1,13 @@ +use crate::{AbsentType, StdType}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct AbsenceTypeOption { + pub absent_type: AbsentType, + pub absent_kind_enabled: bool, + pub absent_kind_required: bool, + pub absent_note_enabled: bool, + pub next_absent_type: AbsentType, + pub absent_kinds: Vec, +} diff --git a/src/absence/absent_type.rs b/src/absence/absent_type.rs new file mode 100644 index 0000000..3fe4bd1 --- /dev/null +++ b/src/absence/absent_type.rs @@ -0,0 +1,14 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub enum AbsentType { + Absent, + AbsentLate, + AbsentMiss, + AbsentOk, + AbsentSchool, + AbsentSoon, + DistanceTeaching, + NoAbsent, +} diff --git a/src/absence/excuse_absence_response.rs b/src/absence/excuse_absence_response.rs new file mode 100644 index 0000000..feccfa8 --- /dev/null +++ b/src/absence/excuse_absence_response.rs @@ -0,0 +1,9 @@ +use crate::{AbsenceRecord, Hour}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct ExcuseAbsenceResponse { + pub absences: Vec, + pub hours: Vec, +} diff --git a/src/absence/mod.rs b/src/absence/mod.rs index d7fb00d..6be0793 100644 --- a/src/absence/mod.rs +++ b/src/absence/mod.rs @@ -1,5 +1,23 @@ mod absence; +mod absence_day; +mod absence_day_response; +mod absence_overview_response; +mod absence_record; +mod absence_type_option; +mod absent_type; mod endpoints; +mod excuse_absence_response; +mod student_timetable_absence_response; +mod subject_absence; pub use absence::*; +pub use absence_day::*; +pub use absence_day_response::*; +pub use absence_overview_response::*; +pub use absence_record::*; +pub use absence_type_option::*; +pub use absent_type::*; pub use endpoints::*; +pub use excuse_absence_response::*; +pub use student_timetable_absence_response::*; +pub use subject_absence::*; diff --git a/src/absence/student_timetable_absence_response.rs b/src/absence/student_timetable_absence_response.rs new file mode 100644 index 0000000..d865f18 --- /dev/null +++ b/src/absence/student_timetable_absence_response.rs @@ -0,0 +1,10 @@ +use crate::{AbsenceDayResponse, AbsenceTypeOption, StdTypeNullable}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct StudentTimetableAbsenceResponse { + pub student: Option, + pub days: Vec, + pub absent_type_options: Vec, +} diff --git a/src/absence/subject_absence.rs b/src/absence/subject_absence.rs new file mode 100644 index 0000000..4f01c3d --- /dev/null +++ b/src/absence/subject_absence.rs @@ -0,0 +1,13 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct SubjectAbsence { + pub subject_name: String, + pub lessons_count: u16, + pub base: u16, + pub late: u16, + pub soon: u16, + pub school: u16, + pub distance_teaching: u16, +} diff --git a/src/semester/semester.rs b/src/semester/certificate_term.rs similarity index 50% rename from src/semester/semester.rs rename to src/semester/certificate_term.rs index d69c925..fd97fd8 100644 --- a/src/semester/semester.rs +++ b/src/semester/certificate_term.rs @@ -1,13 +1,7 @@ -use crate::StdTypeNullable; +use crate::{FinalMark, StdTypeNullable}; use chrono::{DateTime, FixedOffset}; use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct CertificateTerms { - pub certificate_terms: Vec, -} - #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct CertificateTerm { @@ -30,29 +24,6 @@ pub struct CertificateTerm { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] -pub struct FinalMark { - pub mark_date: DateTime, - pub edit_date: DateTime, - pub mark_text: String, - pub subject_id: String, - pub id: String, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct PedagogicalMeasure { - pub pedagogical_measures: Vec, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct PedagogicalMeasures { - pub school_year: String, - pub semester: String, - pub type_label: String, - pub date: DateTime, - pub type_id: String, - pub text: String, - pub actual_grade: Option, - pub actual_grade_name: Option, +pub struct CertificateTerms { + pub certificate_terms: Vec, } diff --git a/src/semester/final_mark.rs b/src/semester/final_mark.rs new file mode 100644 index 0000000..8f9271b --- /dev/null +++ b/src/semester/final_mark.rs @@ -0,0 +1,12 @@ +use chrono::{DateTime, FixedOffset}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct FinalMark { + pub mark_date: DateTime, + pub edit_date: DateTime, + pub mark_text: String, + pub subject_id: String, + pub id: String, +} diff --git a/src/semester/mod.rs b/src/semester/mod.rs index e2b6723..8ec482c 100644 --- a/src/semester/mod.rs +++ b/src/semester/mod.rs @@ -1,5 +1,9 @@ +mod certificate_term; mod endpoints; -mod semester; +mod final_mark; +mod pedagogical_measure; +pub use certificate_term::*; pub use endpoints::*; -pub use semester::*; +pub use final_mark::*; +pub use pedagogical_measure::*; diff --git a/src/semester/pedagogical_measure.rs b/src/semester/pedagogical_measure.rs new file mode 100644 index 0000000..07f0cf0 --- /dev/null +++ b/src/semester/pedagogical_measure.rs @@ -0,0 +1,21 @@ +use chrono::{DateTime, FixedOffset}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct PedagogicalMeasure { + pub pedagogical_measures: Vec, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct PedagogicalMeasures { + pub school_year: String, + pub semester: String, + pub type_label: String, + pub date: DateTime, + pub type_id: String, + pub text: String, + pub actual_grade: Option, + pub actual_grade_name: Option, +}