use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use models::{MessageId, RoomId, UserId}; #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum PinEventType { Added, Removed, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(tag = "type", rename_all = "snake_case")] pub enum PinEvent { Added(PinAddedService), Removed(PinRemovedService), } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct PinAddedService { pub room: RoomId, pub message: MessageId, pub pinned_by: UserId, pub pinned_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct PinRemovedService { pub room: RoomId, pub message: MessageId, pub removed_by: UserId, pub removed_at: DateTime, } #[derive(Debug, Clone, Deserialize, Serialize)] pub struct PinAddClient { pub room: RoomId, pub message: MessageId, } #[derive(Debug, Clone, Deserialize, Serialize)] pub struct PinRemoveClient { pub room: RoomId, pub message: MessageId, }