use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use models::{MessageId, RoomId, Uuid}; #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum AttachmentEventType { Uploaded, ThumbnailGenerated, Deleted, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(tag = "type", rename_all = "snake_case")] pub enum AttachmentEvent { Uploaded(AttachmentUploadedService), ThumbnailGenerated(AttachmentThumbnailService), Deleted(AttachmentDeletedService), } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AttachmentUploadedService { pub id: Uuid, pub room: RoomId, pub message: Option, pub filename: String, pub content_type: String, pub size: i64, pub url: String, pub uploaded_by: Uuid, pub uploaded_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AttachmentThumbnailService { pub id: Uuid, pub room: RoomId, pub thumbnail_url: String, pub width: Option, pub height: Option, pub generated_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AttachmentDeletedService { pub id: Uuid, pub room: RoomId, pub deleted_by: Uuid, pub deleted_at: DateTime, }