summaryrefslogtreecommitdiff
path: root/src/types/chat.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/types/chat.rs')
-rw-r--r--src/types/chat.rs35
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"))