From 5b24d0052bcf9a0d80898eeeb20f0a9ce0696069 Mon Sep 17 00:00:00 2001 From: Radical Date: Tue, 5 Aug 2025 03:28:24 +0200 Subject: [PATCH] feat: return member with messages --- src/objects/message.rs | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/objects/message.rs b/src/objects/message.rs index a5224e0..f30f14d 100644 --- a/src/objects/message.rs +++ b/src/objects/message.rs @@ -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 { - 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, - user: User, + member: Member, }