feat: return member with messages
This commit is contained in:
parent
8a7711cabc
commit
5b24d0052b
1 changed files with 20 additions and 6 deletions
|
@ -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,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue