use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use uuid::Uuid; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Message { pub id: Uuid, pub conversation_id: Uuid, pub sender_id: Uuid, pub content: String, pub status: String, pub message_type: String, pub kind: String, // Add this field pub shard_key: i32, pub created_at: DateTime, pub updated_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Instance { pub id: Uuid, pub customer_id: Uuid, pub name: String, pub shard_id: i32, pub created_at: DateTime, pub updated_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Room { pub id: Uuid, pub instance_id: Uuid, pub name: String, pub is_active: bool, pub created_at: DateTime, pub updated_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Track { pub id: Uuid, pub room_id: Uuid, pub user_id: Uuid, pub media_type: String, pub created_at: DateTime, pub updated_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct User { pub id: Uuid, pub instance_id: Uuid, pub email: String, pub name: String, pub created_at: DateTime, pub updated_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Customer { pub id: Uuid, pub name: String, pub email: String, pub created_at: DateTime, pub updated_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct RoomConfig { pub instance_id: Uuid, pub name: String, pub max_participants: u32, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Connection { pub id: Uuid, pub room_id: Uuid, pub user_id: Uuid, pub connected_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TrackInfo { pub room_id: Uuid, pub user_id: Uuid, pub media_type: String, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Subscription { pub id: Uuid, pub track_id: Uuid, pub subscriber_id: Uuid, pub created_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Participant { pub user_id: Uuid, pub room_id: Uuid, pub joined_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct RoomStats { pub participant_count: u32, pub track_count: u32, pub duration: i64, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageId(pub Uuid); #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageFilter { pub conversation_id: Option, pub sender_id: Option, pub from_date: Option>, pub to_date: Option>, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Status { pub code: String, pub timestamp: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SearchQuery { pub query: String, pub conversation_id: Option, pub from_date: Option>, pub to_date: Option>, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct FileUpload { pub content: Vec, pub filename: String, pub content_type: String, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct FileInfo { pub id: Uuid, pub filename: String, pub content_type: String, pub size: u64, pub created_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct FileContent { pub content: Vec, pub content_type: String, }