Edit and Remove message
This commit is contained in:
+24
-4
@@ -1,5 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use anyhow::anyhow;
|
||||
|
||||
use crate::{plugin::types::LoaderMessage, server::Server, types, utils::client::Client};
|
||||
|
||||
crate::logger!(LOGGER "Message Manager");
|
||||
@@ -52,16 +54,34 @@ pub fn send(
|
||||
}
|
||||
|
||||
pub fn edit(
|
||||
_server: &Arc<Server>,
|
||||
_client: &Client,
|
||||
message_id: usize,
|
||||
server: &Arc<Server>,
|
||||
client: &Client,
|
||||
message_id: i64,
|
||||
new_contents: &str,
|
||||
) -> crate::Result<()> {
|
||||
LOGGER.info(format!("EditMessage {message_id}: {new_contents}"));
|
||||
let Some(msg) = server.db.get_message_by_id(message_id)? else {
|
||||
return Err(anyhow!("Message does not exist"));
|
||||
};
|
||||
|
||||
if msg.from != client.get_uuid()? {
|
||||
return Err(anyhow!("You are not the author of this message"));
|
||||
}
|
||||
|
||||
server.db.edit_message(message_id, new_contents)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn delete(_server: &Arc<Server>, _client: &Client, message_id: usize) -> crate::Result<()> {
|
||||
pub fn delete(server: &Arc<Server>, client: &Client, message_id: i64) -> crate::Result<()> {
|
||||
LOGGER.info(format!("DeleteMessage {message_id}"));
|
||||
let Some(msg) = server.db.get_message_by_id(message_id)? else {
|
||||
return Err(anyhow!("Message does not exist"));
|
||||
};
|
||||
|
||||
if msg.from != client.get_uuid()? {
|
||||
return Err(anyhow!("You are not the author of this message"));
|
||||
}
|
||||
|
||||
server.db.delete_message(message_id)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
+4
-4
@@ -49,7 +49,7 @@ pub mod handshake {
|
||||
pub struct ClientDetails {
|
||||
pub version: String,
|
||||
pub auth_token: String,
|
||||
pub last_message: Option<usize>,
|
||||
pub last_message: Option<i64>,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,12 +70,12 @@ pub mod message {
|
||||
|
||||
/// Edit a message (if allowed)
|
||||
EditMessage {
|
||||
message_id: usize,
|
||||
message_id: i64,
|
||||
new_contents: String,
|
||||
},
|
||||
|
||||
/// Delete a message (if allowed)
|
||||
DeleteMessage { message_id: usize },
|
||||
DeleteMessage { message_id: i64 },
|
||||
}
|
||||
|
||||
/// Messages sent *from the server* to the client
|
||||
@@ -101,7 +101,7 @@ pub mod message {
|
||||
/// A message was deleted
|
||||
MessageDelete {
|
||||
channel_id: String,
|
||||
message_id: usize,
|
||||
message_id: i64,
|
||||
},
|
||||
|
||||
/// Presence updates
|
||||
|
||||
@@ -52,7 +52,7 @@ impl Database {
|
||||
}
|
||||
|
||||
/// Delete a message from the DB
|
||||
pub fn delete_message(&self, message_id: usize) -> Result<()> {
|
||||
pub fn delete_message(&self, message_id: i64) -> Result<()> {
|
||||
self.0
|
||||
.execute("DELETE FROM chat WHERE id = ?1;", params![message_id])?;
|
||||
|
||||
@@ -60,7 +60,7 @@ impl Database {
|
||||
}
|
||||
|
||||
/// Delete a message from the DB
|
||||
pub fn edit_message(&self, message_id: usize, contents: &str) -> Result<()> {
|
||||
pub fn edit_message(&self, message_id: i64, contents: &str) -> Result<()> {
|
||||
self.0.execute(
|
||||
"UPDATE table_name
|
||||
SET contents = ?2
|
||||
@@ -73,7 +73,7 @@ impl Database {
|
||||
}
|
||||
|
||||
/// Get a message by its ID
|
||||
pub fn get_message_by_id(&self, message_id: &str) -> Result<Option<Message>> {
|
||||
pub fn get_message_by_id(&self, message_id: i64) -> Result<Option<Message>> {
|
||||
let mut stmt = self.0.prepare(
|
||||
"SELECT id, channel_id, user_id, contents, timestamp
|
||||
FROM chat
|
||||
@@ -104,7 +104,7 @@ impl Database {
|
||||
}
|
||||
|
||||
/// Get all messages with an ID greater than the given one
|
||||
pub fn get_messages_after_id(&self, message_id: usize) -> Result<Vec<Message>> {
|
||||
pub fn get_messages_after_id(&self, message_id: i64) -> Result<Vec<Message>> {
|
||||
let mut stmt = self.0.prepare(
|
||||
"SELECT id, channel_id, user_id, contents, timestamp
|
||||
FROM chat
|
||||
|
||||
Reference in New Issue
Block a user