Skip to content
This repository has been archived by the owner on Nov 23, 2022. It is now read-only.

Commit

Permalink
Merge pull request #53 from jay3332/patch-2
Browse files Browse the repository at this point in the history
Add `members.x.user` field in `GET /guilds/:id?members=true`
  • Loading branch information
hydrostaticcog authored Nov 14, 2021
2 parents 106c971 + 49e83d0 commit 528d5f3
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions ferrischat_webserver/src/guilds/get_guild.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use actix_web::{web::Query, HttpRequest, HttpResponse, Responder};
use ferrischat_common::request_json::GetGuildUrlParams;
use ferrischat_common::types::{
Channel, Guild, GuildFlags, InternalServerErrorJson, Member, NotFoundJson,
Channel, Guild, GuildFlags, InternalServerErrorJson, Member, NotFoundJson, User, UserFlags,
};
use num_traits::ToPrimitive;

Expand Down Expand Up @@ -68,22 +68,30 @@ pub async fn get_guild(
};

let members = if params.members.unwrap_or(false) {
let resp = sqlx::query!("SELECT * FROM members WHERE guild_id = $1", bigint_guild_id)
let resp = sqlx::query!("SELECT m.*, u.name AS name, u.flags AS flags, u.discriminator AS discriminator FROM members m CROSS JOIN LATERAL (SELECT * FROM users WHERE id = m.user_id) as u WHERE guild_id = $1", bigint_guild_id)
.fetch_all(db)
.await;
Some(match resp {
Ok(resp) => resp
.iter()
.filter_map(|x| {
let user_id = x
.user_id
.with_scale(0)
.into_bigint_and_exponent()
.0
.to_u128()?;

Some(Member {
user_id: Some(
x.user_id
.with_scale(0)
.into_bigint_and_exponent()
.0
.to_u128()?,
),
user: None,
user_id: Some(user_id),
user: Some(User {
id: user_id,
name: x.name.clone(),
avatar: None,
guilds: None,
flags: UserFlags::from_bits_truncate(x.flags),
discriminator: x.discriminator,
}),
guild_id: Some(guild_id),
guild: None,
})
Expand Down

0 comments on commit 528d5f3

Please sign in to comment.