Improvements overall
This commit is contained in:
+5
-13
@@ -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
@@ -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
@@ -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
@@ -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 {}
|
||||||
|
|||||||
Reference in New Issue
Block a user