feat: Make me optional in Member::fetch_one()
This commit is contained in:
parent
4cb89645fe
commit
8a7711cabc
1 changed files with 18 additions and 4 deletions
|
@ -107,7 +107,7 @@ impl MemberBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
pub struct Member {
|
pub struct Member {
|
||||||
pub uuid: Uuid,
|
pub uuid: Uuid,
|
||||||
pub nickname: Option<String>,
|
pub nickname: Option<String>,
|
||||||
|
@ -150,14 +150,17 @@ impl Member {
|
||||||
pub async fn fetch_one(
|
pub async fn fetch_one(
|
||||||
conn: &mut Conn,
|
conn: &mut Conn,
|
||||||
cache_pool: &redis::Client,
|
cache_pool: &redis::Client,
|
||||||
me: &Me,
|
me: Option<&Me>,
|
||||||
user_uuid: Uuid,
|
user_uuid: Uuid,
|
||||||
guild_uuid: Uuid,
|
guild_uuid: Uuid,
|
||||||
) -> Result<Self, Error> {
|
) -> Result<Self, Error> {
|
||||||
|
let member: MemberBuilder;
|
||||||
|
let user: UserBuilder;
|
||||||
|
let friend: Option<Friend>;
|
||||||
use friends::dsl as fdsl;
|
use friends::dsl as fdsl;
|
||||||
use guild_members::dsl;
|
use guild_members::dsl;
|
||||||
let (member, user, friend): (MemberBuilder, UserBuilder, Option<Friend>) =
|
if let Some(me) = me {
|
||||||
dsl::guild_members
|
(member, user, friend) = dsl::guild_members
|
||||||
.filter(dsl::guild_uuid.eq(guild_uuid))
|
.filter(dsl::guild_uuid.eq(guild_uuid))
|
||||||
.filter(dsl::user_uuid.eq(user_uuid))
|
.filter(dsl::user_uuid.eq(user_uuid))
|
||||||
.inner_join(users::table)
|
.inner_join(users::table)
|
||||||
|
@ -174,6 +177,17 @@ impl Member {
|
||||||
))
|
))
|
||||||
.get_result(conn)
|
.get_result(conn)
|
||||||
.await?;
|
.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
|
member
|
||||||
.build_with_parts(conn, cache_pool, user, friend)
|
.build_with_parts(conn, cache_pool, user, friend)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue