backend/src/objects/message.rs
Radical f3760af1bb
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
ci/woodpecker/push/publish-docs Pipeline was successful
feat: add reply_to field to messages
2025-07-04 21:42:23 +02:00

43 lines
1 KiB
Rust

use diesel::{Insertable, Queryable, Selectable};
use serde::Serialize;
use uuid::Uuid;
use crate::{Data, error::Error, schema::messages};
use super::User;
#[derive(Clone, Queryable, Selectable, Insertable)]
#[diesel(table_name = messages)]
#[diesel(check_for_backend(diesel::pg::Pg))]
pub struct MessageBuilder {
pub uuid: Uuid,
pub channel_uuid: Uuid,
pub user_uuid: Uuid,
pub message: String,
pub reply_to: Option<Uuid>,
}
impl MessageBuilder {
pub async fn build(&self, data: &Data) -> Result<Message, Error> {
let user = User::fetch_one(data, self.user_uuid).await?;
Ok(Message {
uuid: self.uuid,
channel_uuid: self.channel_uuid,
user_uuid: self.user_uuid,
message: self.message.clone(),
reply_to: self.reply_to,
user,
})
}
}
#[derive(Clone, Serialize)]
pub struct Message {
uuid: Uuid,
channel_uuid: Uuid,
user_uuid: Uuid,
message: String,
reply_to: Option<Uuid>,
user: User,
}