Improvements overall

This commit is contained in:
2025-09-15 17:43:12 +02:00
parent 50bc3a85ca
commit 0f3e0ac68a
4 changed files with 31 additions and 49 deletions
+5 -13
View File
@@ -24,7 +24,7 @@ pub fn send(
let msg = server.wrap_err( let msg = server.wrap_err(
&client, &client,
server.db.messages_db.insert( server.db.insert_message(
&channel_id, &channel_id,
"idk", "idk",
&contents, &contents,
@@ -42,22 +42,14 @@ pub fn send(
pub fn edit( pub fn edit(
_server: &Arc<Server>, _server: &Arc<Server>,
_client: &Client, _client: &Client,
channel_id: &str, message_id: usize,
message_id: &str,
new_contents: &str, new_contents: &str,
) -> crate::Result<()> { ) -> crate::Result<()> {
LOGGER.info(format!( LOGGER.info(format!("EditMessage {message_id}: {new_contents}"));
"EditMessage {message_id} in {channel_id}: {new_contents}"
));
Ok(()) Ok(())
} }
pub fn delete( pub fn delete(_server: &Arc<Server>, _client: &Client, message_id: usize) -> crate::Result<()> {
_server: &Arc<Server>, LOGGER.info(format!("DeleteMessage {message_id}"));
_client: &Client,
channel_id: &str,
message_id: &str,
) -> crate::Result<()> {
LOGGER.info(format!("DeleteMessage {message_id} in {channel_id}"));
Ok(()) Ok(())
} }
+4 -6
View File
@@ -24,15 +24,13 @@ impl Server {
} }
ClientMessage::EditMessage { ClientMessage::EditMessage {
channel_id,
message_id, message_id,
new_contents, new_contents,
} => message::edit(self, client, channel_id, message_id, new_contents)?, } => message::edit(self, client, *message_id, new_contents)?,
ClientMessage::DeleteMessage { ClientMessage::DeleteMessage { message_id } => {
channel_id, message::delete(self, client, *message_id)?
message_id, }
} => message::delete(self, client, channel_id, message_id)?,
}, },
WsMessage::Binary(b) => { WsMessage::Binary(b) => {
+3 -5
View File
@@ -12,15 +12,13 @@ pub enum ClientMessage {
/// Edit a message (if allowed) /// Edit a message (if allowed)
EditMessage { EditMessage {
channel_id: String, message_id: usize,
message_id: String,
new_contents: String, new_contents: String,
}, },
/// Delete a message (if allowed) /// Delete a message (if allowed)
DeleteMessage { DeleteMessage {
channel_id: String, message_id: usize,
message_id: String,
}, },
} }
@@ -46,7 +44,7 @@ pub enum ServerMessage {
/// A message was deleted /// A message was deleted
MessageDelete { MessageDelete {
channel_id: String, channel_id: String,
message_id: String, message_id: usize,
}, },
/// Presence updates /// Presence updates
+15 -21
View File
@@ -1,28 +1,14 @@
use crate::{ServerConfig, types::data::Message}; use crate::{ServerConfig, types::data::Message};
use rusqlite::{Connection, Result, params}; use rusqlite::{Connection, Result, params};
pub struct Database { pub struct Database(pub Connection);
pub messages_db: MessagesDb,
}
// General use case
impl Database { impl Database {
pub fn new(config: &ServerConfig) -> Option<Self> { pub fn new(_config: &ServerConfig) -> Option<Self> {
let conn = Connection::open("main.db").ok()?; 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 {} conn.execute(
unsafe impl Sync for Database {}
pub struct MessagesDb(pub Connection);
impl MessagesDb {
pub fn init(&self, _config: &ServerConfig) -> Option<usize> {
self.0
.execute(
"CREATE TABLE IF NOT EXISTS chat ( "CREATE TABLE IF NOT EXISTS chat (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
channel_id TEXT NOT NULL, channel_id TEXT NOT NULL,
@@ -32,11 +18,16 @@ impl MessagesDb {
)", )",
[], [],
) )
.ok() .ok()?;
Some(Database(conn))
}
} }
// For chat messages
impl Database {
/// Insert a message into the DB /// Insert a message into the DB
pub fn insert( pub fn insert_message(
&self, &self,
channel_id: &str, channel_id: &str,
user_id: &str, user_id: &str,
@@ -61,7 +52,7 @@ impl MessagesDb {
} }
/// Get a message by its ID /// Get a message by its ID
pub fn get_by_id(&self, message_id: usize) -> Result<Option<Message>> { pub fn get_message_by_id(&self, message_id: usize) -> Result<Option<Message>> {
let mut stmt = self.0.prepare( let mut stmt = self.0.prepare(
"SELECT id, channel_id, user_id, contents, timestamp "SELECT id, channel_id, user_id, contents, timestamp
FROM chat FROM chat
@@ -91,3 +82,6 @@ impl MessagesDb {
Ok(None) Ok(None)
} }
} }
unsafe impl Send for Database {}
unsafe impl Sync for Database {}