From f5162cceebc099ed637b575e365d2a8ae0a14985 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Sat, 4 Oct 2025 16:49:29 +0200 Subject: [PATCH] Actual DM structure --- src/server.rs | 4 ++-- src/utils/database.rs | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/server.rs b/src/server.rs index 93272ad..508df39 100644 --- a/src/server.rs +++ b/src/server.rs @@ -119,9 +119,9 @@ impl Server { client.send(types::ServerMessage::Authenticated { uuid, messages: if let Some(i) = last_message { - self.wrap_err(&client, self.db.get_messages_after_id(i))? + self.wrap_err(&client, self.db.get_messages_after_id(uuid, i))? } else { - self.wrap_err(&client, self.db.get_messages_after_id(0))? + self.wrap_err(&client, self.db.get_messages_after_id(uuid, 0))? }, }), )?; diff --git a/src/utils/database.rs b/src/utils/database.rs index cb354f8..91d599e 100644 --- a/src/utils/database.rs +++ b/src/utils/database.rs @@ -104,15 +104,20 @@ impl Database { } /// Get all messages with an ID greater than the given one - pub fn get_messages_after_id(&self, message_id: usize) -> Result> { + pub fn get_messages_after_id( + &self, + channel_id: u32, + message_id: usize, + ) -> Result> { let mut stmt = self.0.prepare( "SELECT id, channel_id, user_id, contents, timestamp - FROM chat - WHERE id > ?1 - ORDER BY id ASC", + FROM chat + WHERE (channel_id = ?2 OR user_id = ?2) + AND id > ?1 + ORDER BY id ASC;", )?; - let rows = stmt.query_map(params![message_id], |row| { + let rows = stmt.query_map(params![message_id, channel_id], |row| { Ok(Message { id: row.get::<_, i64>(0)?, channel_id: row.get::<_, u32>(1)?,