From b7b07141f9afb5f31f67ecf0b5ca29800c1d1805 Mon Sep 17 00:00:00 2001 From: Radical Date: Sat, 12 Jul 2025 19:43:36 +0200 Subject: [PATCH] feat: add needed DB entries for editing --- .../2025-07-12-124819_message_is_edited/down.sql | 2 ++ .../2025-07-12-124819_message_is_edited/up.sql | 2 ++ src/objects/channel.rs | 16 ++++++++++++++++ src/objects/message.rs | 3 +++ src/schema.rs | 1 + 5 files changed, 24 insertions(+) create mode 100644 migrations/2025-07-12-124819_message_is_edited/down.sql create mode 100644 migrations/2025-07-12-124819_message_is_edited/up.sql diff --git a/migrations/2025-07-12-124819_message_is_edited/down.sql b/migrations/2025-07-12-124819_message_is_edited/down.sql new file mode 100644 index 0000000..1a636b9 --- /dev/null +++ b/migrations/2025-07-12-124819_message_is_edited/down.sql @@ -0,0 +1,2 @@ +-- This file should undo anything in `up.sql` +ALTER TABLE messages DROP COLUMN is_edited; diff --git a/migrations/2025-07-12-124819_message_is_edited/up.sql b/migrations/2025-07-12-124819_message_is_edited/up.sql new file mode 100644 index 0000000..e600a55 --- /dev/null +++ b/migrations/2025-07-12-124819_message_is_edited/up.sql @@ -0,0 +1,2 @@ +-- Your SQL goes here +ALTER TABLE messages ADD COLUMN is_edited BOOLEAN NOT NULL DEFAULT FALSE; diff --git a/src/objects/channel.rs b/src/objects/channel.rs index 1192c69..3b55137 100644 --- a/src/objects/channel.rs +++ b/src/objects/channel.rs @@ -280,6 +280,7 @@ impl Channel { user_uuid, message, reply_to, + is_edited: false, }; let mut conn = data.pool.get().await?; @@ -292,6 +293,21 @@ impl Channel { message.build(data).await } + /*pub async fn edit_message(&self, data: &Data, user_uuid: Uuid, message_uuid: Uuid, message: String) -> Result { + use messages::dsl; + + let mut conn = data.pool.get().await?; + + update(messages::table) + .filter(dsl::user_uuid.eq(user_uuid)) + .filter(dsl::uuid.eq(message_uuid)) + .set((dsl::is_edited.eq(true), dsl::message.eq(message))) + .execute(&mut conn) + .await?; + + Ok(()) + }*/ + pub async fn set_name(&mut self, data: &Data, new_name: String) -> Result<(), Error> { if !CHANNEL_REGEX.is_match(&new_name) { return Err(Error::BadRequest("Channel name is invalid".to_string())); diff --git a/src/objects/message.rs b/src/objects/message.rs index a887541..588886b 100644 --- a/src/objects/message.rs +++ b/src/objects/message.rs @@ -15,6 +15,7 @@ pub struct MessageBuilder { pub user_uuid: Uuid, pub message: String, pub reply_to: Option, + pub is_edited: bool, } impl MessageBuilder { @@ -27,6 +28,7 @@ impl MessageBuilder { user_uuid: self.user_uuid, message: self.message.clone(), reply_to: self.reply_to, + is_edited: self.is_edited, user, }) } @@ -39,5 +41,6 @@ pub struct Message { user_uuid: Uuid, message: String, reply_to: Option, + is_edited: bool, user: User, } diff --git a/src/schema.rs b/src/schema.rs index 2693b02..ecbae6f 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -94,6 +94,7 @@ diesel::table! { #[max_length = 4000] message -> Varchar, reply_to -> Nullable, + is_edited -> Bool, } }