use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; /// User information for admin user management #[derive(Debug, Serialize, Deserialize, Clone)] pub struct User { pub id: String, pub username: String, pub email: Option, pub role: AdminUserRole, pub is_active: bool, pub created_at: DateTime, pub updated_at: DateTime, pub last_login: Option>, } #[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] pub enum AdminUserRole { #[serde(rename = "admin")] Admin, #[serde(rename = "moderator")] Moderator, #[serde(rename = "user")] User, } /// Schedule data #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Schedule { pub date: String, // YYYY-MM-DD format pub sabbath_school: Option, pub divine_worship: Option, pub scripture_reading: Option, pub sunset: Option, pub special_notes: Option, pub created_at: DateTime, pub updated_at: DateTime, } /// Conference data #[derive(Debug, Serialize, Deserialize, Clone)] pub struct ConferenceData { pub id: String, pub name: String, pub website: Option, pub contact_info: Option, pub leadership: Option>, pub announcements: Option>, pub updated_at: DateTime, } #[derive(Debug, Serialize, Deserialize, Clone)] pub struct ConferenceLeader { pub name: String, pub title: String, pub email: Option, pub phone: Option, } /// New schedule creation #[derive(Debug, Serialize, Deserialize, Clone)] pub struct NewSchedule { pub date: String, // YYYY-MM-DD format pub sabbath_school: Option, pub divine_worship: Option, pub scripture_reading: Option, pub sunset: Option, pub special_notes: Option, } /// Schedule update #[derive(Debug, Serialize, Deserialize, Clone)] pub struct ScheduleUpdate { #[serde(skip_serializing_if = "Option::is_none")] pub sabbath_school: Option, #[serde(skip_serializing_if = "Option::is_none")] pub divine_worship: Option, #[serde(skip_serializing_if = "Option::is_none")] pub scripture_reading: Option, #[serde(skip_serializing_if = "Option::is_none")] pub sunset: Option, #[serde(skip_serializing_if = "Option::is_none")] pub special_notes: Option, } /// File upload response #[derive(Debug, Serialize, Deserialize, Clone)] pub struct UploadResponse { pub file_path: String, pub pdf_path: Option, // Full URL to the uploaded file pub message: String, }