feat: return member with messages

This commit is contained in:
Radical 2025-08-05 03:28:24 +02:00
parent 8a7711cabc
commit 5b24d0052b

View file

@ -1,10 +1,15 @@
use diesel::{Insertable, Queryable, Selectable};
use diesel::{ExpressionMethods, Insertable, QueryDsl, Queryable, Selectable};
use diesel_async::RunQueryDsl;
use serde::Serialize;
use uuid::Uuid;
use crate::{Conn, error::Error, schema::messages};
use crate::{
Conn,
error::Error,
schema::{channels, guilds, messages},
};
use super::User;
use super::Member;
#[derive(Clone, Queryable, Selectable, Insertable)]
#[diesel(table_name = messages)]
@ -23,7 +28,16 @@ impl MessageBuilder {
conn: &mut Conn,
cache_pool: &redis::Client,
) -> Result<Message, Error> {
let user = User::fetch_one(conn, cache_pool, self.user_uuid).await?;
use channels::dsl;
let guild_uuid = dsl::channels
.filter(dsl::uuid.eq(self.channel_uuid))
.inner_join(guilds::table)
.select(guilds::uuid)
.get_result(conn)
.await?;
let member = Member::fetch_one(conn, cache_pool, None, self.user_uuid, guild_uuid).await?;
Ok(Message {
uuid: self.uuid,
@ -31,7 +45,7 @@ impl MessageBuilder {
user_uuid: self.user_uuid,
message: self.message.clone(),
reply_to: self.reply_to,
user,
member,
})
}
}
@ -43,5 +57,5 @@ pub struct Message {
user_uuid: Uuid,
message: String,
reply_to: Option<Uuid>,
user: User,
member: Member,
}