diff options
Diffstat (limited to 'src/types/chat.rs')
-rw-r--r-- | src/types/chat.rs | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/types/chat.rs b/src/types/chat.rs index dadcf10..ab3390c 100644 --- a/src/types/chat.rs +++ b/src/types/chat.rs @@ -1,4 +1,4 @@ -use serde::Serialize; +use serde::{Serialize, Deserialize}; use tracing::instrument; use crate::{types::http::{ResponseCode, Result}, database::Database}; @@ -18,6 +18,37 @@ pub struct ChatMessage { pub content: String } +#[derive(Serialize, Deserialize, Clone, Debug)] +#[serde(tag = "type")] +pub enum ChatEvent { + #[serde(rename = "message")] + Message { + user_id: u64, + message_id: u64, + room_id: u64, + content: String, + date: u64 + }, + + #[serde(rename = "add")] + Add { + user_id: u64, + room_id: u64 + }, + + #[serde(rename = "leave")] + Leave { + user_id: u64, + room_id: u64 + }, + + #[serde(rename = "typing")] + Typing { + user_id: u64, + room_id: u64 + } +} + impl ChatRoom { #[instrument(skip(db))] @@ -87,7 +118,7 @@ impl ChatRoom { } #[instrument(skip(db))] - pub fn load_old_chat_messagegs(&self, db: &Database, newest_message: u64, page: u64) -> Result<Vec<ChatMessage>> { + pub fn load_old_chat_messages(&self, db: &Database, newest_message: u64, page: u64) -> Result<Vec<ChatMessage>> { let Ok(msgs) = db.load_old_chat_messages(self.room_id, newest_message, page) else { tracing::error!("Failed to load messgaes"); return Err(ResponseCode::InternalServerError.text("Failed to load messages")) |