From 0f3e0ac68ab256d8d75a82d95ac6790eb7ce4fa9 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Mon, 15 Sep 2025 17:43:12 +0200 Subject: [PATCH] Improvements overall --- src/requests/message.rs | 18 +++++------------ src/requests/mod.rs | 10 ++++------ src/types.rs | 8 +++----- src/utils/database.rs | 44 ++++++++++++++++++----------------------- 4 files changed, 31 insertions(+), 49 deletions(-) diff --git a/src/requests/message.rs b/src/requests/message.rs index b2ef946..efbf998 100644 --- a/src/requests/message.rs +++ b/src/requests/message.rs @@ -24,7 +24,7 @@ pub fn send( let msg = server.wrap_err( &client, - server.db.messages_db.insert( + server.db.insert_message( &channel_id, "idk", &contents, @@ -42,22 +42,14 @@ pub fn send( pub fn edit( _server: &Arc, _client: &Client, - channel_id: &str, - message_id: &str, + message_id: usize, new_contents: &str, ) -> crate::Result<()> { - LOGGER.info(format!( - "EditMessage {message_id} in {channel_id}: {new_contents}" - )); + LOGGER.info(format!("EditMessage {message_id}: {new_contents}")); Ok(()) } -pub fn delete( - _server: &Arc, - _client: &Client, - channel_id: &str, - message_id: &str, -) -> crate::Result<()> { - LOGGER.info(format!("DeleteMessage {message_id} in {channel_id}")); +pub fn delete(_server: &Arc, _client: &Client, message_id: usize) -> crate::Result<()> { + LOGGER.info(format!("DeleteMessage {message_id}")); Ok(()) } diff --git a/src/requests/mod.rs b/src/requests/mod.rs index 3835048..36364c1 100644 --- a/src/requests/mod.rs +++ b/src/requests/mod.rs @@ -24,15 +24,13 @@ impl Server { } ClientMessage::EditMessage { - channel_id, message_id, new_contents, - } => message::edit(self, client, channel_id, message_id, new_contents)?, + } => message::edit(self, client, *message_id, new_contents)?, - ClientMessage::DeleteMessage { - channel_id, - message_id, - } => message::delete(self, client, channel_id, message_id)?, + ClientMessage::DeleteMessage { message_id } => { + message::delete(self, client, *message_id)? + } }, WsMessage::Binary(b) => { diff --git a/src/types.rs b/src/types.rs index bddc96c..86f3f65 100644 --- a/src/types.rs +++ b/src/types.rs @@ -12,15 +12,13 @@ pub enum ClientMessage { /// Edit a message (if allowed) EditMessage { - channel_id: String, - message_id: String, + message_id: usize, new_contents: String, }, /// Delete a message (if allowed) DeleteMessage { - channel_id: String, - message_id: String, + message_id: usize, }, } @@ -46,7 +44,7 @@ pub enum ServerMessage { /// A message was deleted MessageDelete { channel_id: String, - message_id: String, + message_id: usize, }, /// Presence updates diff --git a/src/utils/database.rs b/src/utils/database.rs index b76bdac..3e3ca67 100644 --- a/src/utils/database.rs +++ b/src/utils/database.rs @@ -1,42 +1,33 @@ use crate::{ServerConfig, types::data::Message}; use rusqlite::{Connection, Result, params}; -pub struct Database { - pub messages_db: MessagesDb, -} +pub struct Database(pub Connection); +// General use case impl Database { - pub fn new(config: &ServerConfig) -> Option { + pub fn new(_config: &ServerConfig) -> Option { let conn = Connection::open("main.db").ok()?; - let messages_db = MessagesDb(conn); - messages_db.init(config)?; - Some(Self { messages_db }) - } -} -unsafe impl Send for Database {} -unsafe impl Sync for Database {} - -pub struct MessagesDb(pub Connection); - -impl MessagesDb { - pub fn init(&self, _config: &ServerConfig) -> Option { - self.0 - .execute( - "CREATE TABLE IF NOT EXISTS chat ( + conn.execute( + "CREATE TABLE IF NOT EXISTS chat ( id INTEGER PRIMARY KEY AUTOINCREMENT, channel_id TEXT NOT NULL, user_id TEXT NOT NULL, contents TEXT NOT NULL, timestamp INTEGER NOT NULL )", - [], - ) - .ok() - } + [], + ) + .ok()?; + Some(Database(conn)) + } +} + +// For chat messages +impl Database { /// Insert a message into the DB - pub fn insert( + pub fn insert_message( &self, channel_id: &str, user_id: &str, @@ -61,7 +52,7 @@ impl MessagesDb { } /// Get a message by its ID - pub fn get_by_id(&self, message_id: usize) -> Result> { + pub fn get_message_by_id(&self, message_id: usize) -> Result> { let mut stmt = self.0.prepare( "SELECT id, channel_id, user_id, contents, timestamp FROM chat @@ -91,3 +82,6 @@ impl MessagesDb { Ok(None) } } + +unsafe impl Send for Database {} +unsafe impl Sync for Database {}