use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use uuid::Uuid; pub type JobId = Uuid; #[derive(Debug, Clone, Serialize, Deserialize)] pub enum JobStatus { Queued, Dialing, Sending, Completed, Failed(String), Cancelled, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct FaxJob { pub id: JobId, pub recipient: String, pub document_path: String, pub status: JobStatus, pub pages: u32, pub retries: u8, pub created_at: DateTime, pub updated_at: DateTime, pub cover_to: Option, pub cover_from: Option, pub cover_subject: Option, pub cover_notes: Option, } impl FaxJob { pub fn new(recipient: String, document_path: String) -> Self { let now = Utc::now(); Self { id: Uuid::new_v4(), recipient, document_path, status: JobStatus::Queued, pages: 0, retries: 0, created_at: now, updated_at: now, cover_to: None, cover_from: None, cover_subject: None, cover_notes: None, } } }