commit b3e4a7247f93e93df55512b451461b97d81a45a5 Author: vextrixes <113197359+vextrixes@users.noreply.github.com> Date: Sat Oct 24 12:17:29 2026 +0200 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..869df07 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..47d2bdc --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "bakalari-types" +version = "0.1.0" +edition = "2024" + +[dependencies] +chrono = { version = "0.4.45", features = ["serde"] } +serde = { version = "1.0.229", features = ["derive"] } diff --git a/src/absence.rs b/src/absence.rs new file mode 100644 index 0000000..49cf160 --- /dev/null +++ b/src/absence.rs @@ -0,0 +1,35 @@ +use chrono::Utc; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct Absence { + pub percentage_threshold: f64, //TODO: cutom type (u8) + pub absences: Vec, + pub absences_per_subject: Vec, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct AbsenceListItem { + pub date: chrono::DateTime, + pub unsolved: i8, + pub ok: i8, + pub missed: i8, + pub late: i8, + pub soon: i8, + pub school: i8, + pub distance_teaching: i8, +} + +#[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/api_info.rs b/src/api_info.rs new file mode 100644 index 0000000..6bf3114 --- /dev/null +++ b/src/api_info.rs @@ -0,0 +1,9 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct ApiInfo { + pub api_version: String, + pub application_version: String, + pub base_url: String, +} diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..0d66c0e --- /dev/null +++ b/src/error.rs @@ -0,0 +1,7 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct Error { + message: String, +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..c1982f9 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,7 @@ +mod absence; +mod api_info; +mod error; + +pub use absence::{Absence, AbsenceListItem, SubjectAbsence}; +pub use api_info::ApiInfo; +pub use error::Error;