use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Project { pub id: String, pub name: String, pub created_at: String, pub updated_at: String, pub settings: Option, pub status: String, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MediaFile { pub id: String, pub project_id: String, pub file_path: String, pub file_hash: Option, pub duration_ms: Option, pub sample_rate: Option, pub channels: Option, pub format: Option, pub file_size: Option, pub created_at: String, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Speaker { pub id: String, pub project_id: String, pub label: String, pub display_name: Option, pub color: Option, pub metadata: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Segment { pub id: String, pub project_id: String, pub media_file_id: String, pub speaker_id: Option, pub start_ms: i64, pub end_ms: i64, pub text: String, pub original_text: Option, pub confidence: Option, pub is_edited: bool, pub edited_at: Option, pub segment_index: i32, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Word { pub id: String, pub segment_id: String, pub word: String, pub start_ms: i64, pub end_ms: i64, pub confidence: Option, pub word_index: i32, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AiOutput { pub id: String, pub project_id: String, pub output_type: String, pub prompt: Option, pub content: String, pub provider: Option, pub created_at: String, pub metadata: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Annotation { pub id: String, pub project_id: String, pub start_ms: i64, pub end_ms: Option, pub text: String, pub annotation_type: String, }