Skip to content

Commit 579c587

Browse files
add: discord_id param to member queries
1 parent b88bec7 commit 579c587

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

src/graphql/queries/member_queries.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::auth::guards::AuthGuard;
22
use crate::auth::AuthContext;
3+
use crate::models::member;
34
use crate::models::{attendance::AttendanceRecord, status_update::StatusUpdateRecord};
45
use async_graphql::{ComplexObject, Context, Object, Result};
56
use chrono::NaiveDate;
@@ -57,31 +58,39 @@ impl MemberQueries {
5758
ctx: &Context<'_>,
5859
member_id: Option<i32>,
5960
email: Option<String>,
61+
discord_id: Option<String>,
6062
) -> Result<Option<Member>> {
6163
let pool = ctx.data::<Arc<PgPool>>().expect("Pool must be in context.");
6264

63-
match (member_id, email) {
64-
(Some(id), None) => {
65+
match (member_id, email, discord_id) {
66+
(Some(id), None, None) => {
6567
let member =
6668
sqlx::query_as::<_, Member>("SELECT * FROM Member WHERE member_id = $1")
6769
.bind(id)
6870
.fetch_optional(pool.as_ref())
6971
.await?;
7072
Ok(member)
7173
}
72-
(None, Some(email)) => {
74+
(None, Some(email), None) => {
7375
let member = sqlx::query_as::<_, Member>("SELECT * FROM Member WHERE email = $1")
7476
.bind(email)
7577
.fetch_optional(pool.as_ref())
7678
.await?;
7779
Ok(member)
7880
}
79-
(Some(_), Some(_)) => Err("Provide only one of member_id or email".into()),
80-
(None, None) => Err("Provide either member_id or email".into()),
81+
(None, None, Some(discord_id)) => {
82+
let member =
83+
sqlx::query_as::<_, Member>("SELECT * FROM Member WHERE discord_id = $1")
84+
.bind(discord_id)
85+
.fetch_optional(pool.as_ref())
86+
.await?;
87+
Ok(member)
88+
}
89+
_ => Err("Provide exactly one of member_id, email, or discord_id".into()),
8190
}
8291
}
8392

84-
/// Fetch the details of the currently logged in member
93+
// Fetch the details of the currently logged in member
8594
#[graphql(guard = "AuthGuard")]
8695
async fn me(&self, ctx: &Context<'_>) -> Result<Member> {
8796
let auth = ctx.data::<AuthContext>()?;

0 commit comments

Comments
 (0)