Compare commits
3 commits
main
...
wip/messag
Author | SHA1 | Date | |
---|---|---|---|
192ac4e1e7 | |||
bfd49046aa | |||
b7b07141f9 |
5 changed files with 25 additions and 0 deletions
2
migrations/2025-07-21-014019_message_is_edited/down.sql
Normal file
2
migrations/2025-07-21-014019_message_is_edited/down.sql
Normal file
|
@ -0,0 +1,2 @@
|
|||
-- This file should undo anything in `up.sql`
|
||||
ALTER TABLE messages DROP COLUMN is_edited;
|
2
migrations/2025-07-21-014019_message_is_edited/up.sql
Normal file
2
migrations/2025-07-21-014019_message_is_edited/up.sql
Normal file
|
@ -0,0 +1,2 @@
|
|||
-- Your SQL goes here
|
||||
ALTER TABLE messages ADD COLUMN is_edited BOOLEAN NOT NULL DEFAULT FALSE;
|
|
@ -285,6 +285,7 @@ impl Channel {
|
|||
user_uuid,
|
||||
message,
|
||||
reply_to,
|
||||
is_edited: false,
|
||||
};
|
||||
|
||||
let mut conn = app_state.pool.get().await?;
|
||||
|
@ -297,6 +298,22 @@ impl Channel {
|
|||
message.build(app_state).await
|
||||
}
|
||||
|
||||
pub async fn edit_message(&self, app_state: &AppState, user_uuid: Uuid, message_uuid: Uuid, message: String) -> Result<Message, Error> {
|
||||
use messages::dsl;
|
||||
|
||||
let mut conn = app_state.pool.get().await?;
|
||||
|
||||
let message: MessageBuilder = 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)))
|
||||
.returning(MessageBuilder::as_select())
|
||||
.get_result(&mut conn)
|
||||
.await?;
|
||||
|
||||
message.build(app_state).await
|
||||
}
|
||||
|
||||
pub async fn set_name(&mut self, app_state: &AppState, new_name: String) -> Result<(), Error> {
|
||||
if !CHANNEL_REGEX.is_match(&new_name) {
|
||||
return Err(Error::BadRequest("Channel name is invalid".to_string()));
|
||||
|
|
|
@ -15,6 +15,7 @@ pub struct MessageBuilder {
|
|||
pub user_uuid: Uuid,
|
||||
pub message: String,
|
||||
pub reply_to: Option<Uuid>,
|
||||
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<Uuid>,
|
||||
is_edited: bool,
|
||||
user: User,
|
||||
}
|
||||
|
|
|
@ -94,6 +94,7 @@ diesel::table! {
|
|||
#[max_length = 4000]
|
||||
message -> Varchar,
|
||||
reply_to -> Nullable<Uuid>,
|
||||
is_edited -> Bool,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue