1
1
use std:: sync:: Arc ;
2
2
3
- use crate :: models:: { member :: Member , status_update_streak:: StatusUpdateStreak as Streak } ;
3
+ use crate :: models:: status_update_streak:: StatusUpdateStreak as Streak ;
4
4
use async_graphql:: { Context , Object , Result } ;
5
5
use sqlx:: PgPool ;
6
6
@@ -9,58 +9,16 @@ pub struct StreakQueries;
9
9
10
10
#[ Object ]
11
11
impl StreakQueries {
12
- async fn streak (
13
- & self ,
14
- ctx : & Context < ' _ > ,
15
- member_id : Option < i32 > ,
16
- roll_no : Option < String > ,
17
- discord_id : Option < String > ,
18
- ) -> Result < Streak > {
12
+ async fn streak ( & self , ctx : & Context < ' _ > , member_id : i32 ) -> Result < Streak > {
19
13
let pool = ctx. data :: < Arc < PgPool > > ( ) . expect ( "Pool must be in context." ) ;
20
14
21
- if let Some ( id) = member_id {
22
- let streak_query = sqlx:: query_as :: < _ , Streak > (
23
- "SELECT current_streak, max_streak FROM StatusUpdateStreak WHERE member_id = $1" ,
24
- )
25
- . bind ( id)
26
- . fetch_one ( pool. as_ref ( ) )
27
- . await ?;
28
-
29
- return Ok ( streak_query) ;
30
- }
31
-
32
- let member_query = if let Some ( roll) = roll_no {
33
- sqlx:: query_as :: < _ , Member > ( "SELECT * FROM Member WHERE roll_no = $1" )
34
- . bind ( roll)
35
- . fetch_one ( pool. as_ref ( ) )
36
- . await
37
- } else if let Some ( discord) = discord_id {
38
- sqlx:: query_as :: < _ , Member > ( "SELECT * FROM Member WHERE discord_id = $1" )
39
- . bind ( discord)
40
- . fetch_one ( pool. as_ref ( ) )
41
- . await
42
- } else {
43
- return Err ( async_graphql:: Error :: new (
44
- "At least one key (member_id, roll_no, discord_id) must be specified." ,
45
- ) ) ;
46
- } ;
47
-
48
- let member = match member_query {
49
- Ok ( member) => member,
50
- Err ( _) => {
51
- return Err ( async_graphql:: Error :: new (
52
- "No member found with the given criteria." ,
53
- ) )
54
- }
55
- } ;
56
-
57
- let streak_query = sqlx:: query_as :: < _ , Streak > (
58
- "SELECT current_streak, max_streak FROM Streak WHERE member_id = $1" ,
15
+ Ok ( sqlx:: query_as :: < _ , Streak > (
16
+ "SELECT current_streak, max_streak FROM StatusUpdateStreak WHERE member_id = $1" ,
59
17
)
60
- . bind ( member . member_id )
18
+ . bind ( member_id)
61
19
. fetch_one ( pool. as_ref ( ) )
62
- . await ?;
20
+ . await ?)
21
+ }
63
22
64
- Ok ( streak_query)
65
23
}
66
24
}
0 commit comments