diff --git a/src/objects/me.rs b/src/objects/me.rs index 167e61e..0c54570 100644 --- a/src/objects/me.rs +++ b/src/objects/me.rs @@ -284,7 +284,7 @@ impl Me { cache_pool: &redis::Client, new_status: i16, ) -> Result<(), Error> { - if !(0..=4).contains(&new_status) { + if new_status > 4 || new_status < 0 { return Err(Error::BadRequest("Invalid status code".to_string())); } self.online_status = new_status; diff --git a/src/objects/member.rs b/src/objects/member.rs index f7e56da..1247ea2 100644 --- a/src/objects/member.rs +++ b/src/objects/member.rs @@ -107,7 +107,7 @@ impl MemberBuilder { } } -#[derive(Serialize, Deserialize, Clone)] +#[derive(Serialize, Deserialize)] pub struct Member { pub uuid: Uuid, pub nickname: Option, @@ -150,17 +150,14 @@ impl Member { pub async fn fetch_one( conn: &mut Conn, cache_pool: &redis::Client, - me: Option<&Me>, + me: &Me, user_uuid: Uuid, guild_uuid: Uuid, ) -> Result { - let member: MemberBuilder; - let user: UserBuilder; - let friend: Option; use friends::dsl as fdsl; use guild_members::dsl; - if let Some(me) = me { - (member, user, friend) = dsl::guild_members + let (member, user, friend): (MemberBuilder, UserBuilder, Option) = + dsl::guild_members .filter(dsl::guild_uuid.eq(guild_uuid)) .filter(dsl::user_uuid.eq(user_uuid)) .inner_join(users::table) @@ -177,17 +174,6 @@ impl Member { )) .get_result(conn) .await?; - } else { - (member, user) = dsl::guild_members - .filter(dsl::guild_uuid.eq(guild_uuid)) - .filter(dsl::user_uuid.eq(user_uuid)) - .inner_join(users::table) - .select((MemberBuilder::as_select(), UserBuilder::as_select())) - .get_result(conn) - .await?; - - friend = None; - } member .build_with_parts(conn, cache_pool, user, friend) diff --git a/src/objects/message.rs b/src/objects/message.rs index f30f14d..a5224e0 100644 --- a/src/objects/message.rs +++ b/src/objects/message.rs @@ -1,15 +1,10 @@ -use diesel::{ExpressionMethods, Insertable, QueryDsl, Queryable, Selectable}; -use diesel_async::RunQueryDsl; +use diesel::{Insertable, Queryable, Selectable}; use serde::Serialize; use uuid::Uuid; -use crate::{ - Conn, - error::Error, - schema::{channels, guilds, messages}, -}; +use crate::{Conn, error::Error, schema::messages}; -use super::Member; +use super::User; #[derive(Clone, Queryable, Selectable, Insertable)] #[diesel(table_name = messages)] @@ -28,16 +23,7 @@ impl MessageBuilder { conn: &mut Conn, cache_pool: &redis::Client, ) -> Result { - 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?; + let user = User::fetch_one(conn, cache_pool, self.user_uuid).await?; Ok(Message { uuid: self.uuid, @@ -45,7 +31,7 @@ impl MessageBuilder { user_uuid: self.user_uuid, message: self.message.clone(), reply_to: self.reply_to, - member, + user, }) } } @@ -57,5 +43,5 @@ pub struct Message { user_uuid: Uuid, message: String, reply_to: Option, - member: Member, + user: User, }