@@ -8,136 +8,142 @@ use crate::graphql::models::Streak;
88use super :: models:: Member ;
99use super :: GraphQLClient ;
1010
11- #[ instrument( level = "debug" ) ]
12- pub async fn increment_streak ( member : & mut Member , client : GraphQLClient ) -> anyhow:: Result < ( ) > {
13- let mutation = format ! (
14- r#"
11+ impl GraphQLClient {
12+ #[ instrument( level = "debug" ) ]
13+ pub async fn increment_streak ( & self , member : & mut Member ) -> anyhow:: Result < ( ) > {
14+ let mutation = format ! (
15+ r#"
1516 mutation {{
1617 incrementStreak(input: {{ memberId: {} }}) {{
1718 currentStreak
1819 maxStreak
1920 }}
2021 }}"# ,
21- member. member_id
22- ) ;
22+ member. member_id
23+ ) ;
2324
24- debug ! ( "Sending mutation {}" , mutation) ;
25- let response = client
26- . http
27- . post ( client . root_url ( ) )
28- . json ( & serde_json:: json!( { "query" : mutation} ) )
29- . send ( )
30- . await
31- . context ( "Failed to succesfully post query to Root" ) ?;
25+ debug ! ( "Sending mutation {}" , mutation) ;
26+ let response = self
27+ . http ( )
28+ . post ( self . root_url ( ) )
29+ . json ( & serde_json:: json!( { "query" : mutation} ) )
30+ . send ( )
31+ . await
32+ . context ( "Failed to succesfully post query to Root" ) ?;
3233
33- if !response. status ( ) . is_success ( ) {
34- return Err ( anyhow ! (
35- "Server responded with an error: {:?}" ,
36- response. status( )
37- ) ) ;
38- }
39- let response_json: serde_json:: Value = response
40- . json ( )
41- . await
42- . context ( "Failed to parse response JSON" ) ?;
43- debug ! ( "Response: {}" , response_json) ;
34+ if !response. status ( ) . is_success ( ) {
35+ return Err ( anyhow ! (
36+ "Server responded with an error: {:?}" ,
37+ response. status( )
38+ ) ) ;
39+ }
40+ let response_json: serde_json:: Value = response
41+ . json ( )
42+ . await
43+ . context ( "Failed to parse response JSON" ) ?;
44+ debug ! ( "Response: {}" , response_json) ;
4445
45- if let Some ( data) = response_json
46- . get ( "data" )
47- . and_then ( |data| data. get ( "incrementStreak" ) )
48- {
49- let current_streak =
50- data . get ( "currentStreak" )
46+ if let Some ( data) = response_json
47+ . get ( "data" )
48+ . and_then ( |data| data. get ( "incrementStreak" ) )
49+ {
50+ let current_streak = data
51+ . get ( "currentStreak" )
5152 . and_then ( |v| v. as_i64 ( ) )
52- . ok_or_else ( || anyhow ! ( "current_streak was parsed as None" ) ) ? as i32 ;
53- let max_streak =
54- data. get ( "maxStreak" )
53+ . ok_or_else ( || anyhow ! ( "current_streak was parsed as None" ) ) ?
54+ as i32 ;
55+ let max_streak = data
56+ . get ( "maxStreak" )
5557 . and_then ( |v| v. as_i64 ( ) )
56- . ok_or_else ( || anyhow ! ( "max_streak was parsed as None" ) ) ? as i32 ;
58+ . ok_or_else ( || anyhow ! ( "max_streak was parsed as None" ) ) ?
59+ as i32 ;
5760
58- if member. streak . is_empty ( ) {
59- member. streak . push ( Streak {
60- current_streak,
61- max_streak,
62- } ) ;
63- } else {
64- for streak in & mut member. streak {
65- streak. current_streak = current_streak;
66- streak. max_streak = max_streak;
61+ if member. streak . is_empty ( ) {
62+ member. streak . push ( Streak {
63+ current_streak,
64+ max_streak,
65+ } ) ;
66+ } else {
67+ for streak in & mut member. streak {
68+ streak. current_streak = current_streak;
69+ streak. max_streak = max_streak;
70+ }
6771 }
72+ } else {
73+ return Err ( anyhow ! (
74+ "Failed to access data from response: {}" ,
75+ response_json
76+ ) ) ;
6877 }
69- } else {
70- return Err ( anyhow ! (
71- "Failed to access data from response: {}" ,
72- response_json
73- ) ) ;
74- }
7578
76- Ok ( ( ) )
77- }
79+ Ok ( ( ) )
80+ }
7881
79- #[ instrument( level = "debug" ) ]
80- pub async fn reset_streak ( member : & mut Member , client : GraphQLClient ) -> anyhow:: Result < ( ) > {
81- let mutation = format ! (
82- r#"
82+ #[ instrument( level = "debug" ) ]
83+ pub async fn reset_streak ( & self , member : & mut Member ) -> anyhow:: Result < ( ) > {
84+ let mutation = format ! (
85+ r#"
8386 mutation {{
8487 resetStreak(input: {{ memberId: {} }}) {{
8588 currentStreak
8689 maxStreak
8790 }}
8891 }}"# ,
89- member. member_id
90- ) ;
92+ member. member_id
93+ ) ;
9194
92- debug ! ( "Sending mutation {}" , mutation) ;
93- let response = client
94- . http
95- . post ( client . root_url ( ) )
96- . json ( & serde_json:: json!( { "query" : mutation } ) )
97- . send ( )
98- . await
99- . context ( "Failed to succesfully post query to Root" ) ?;
95+ debug ! ( "Sending mutation {}" , mutation) ;
96+ let response = self
97+ . http ( )
98+ . post ( self . root_url ( ) )
99+ . json ( & serde_json:: json!( { "query" : mutation } ) )
100+ . send ( )
101+ . await
102+ . context ( "Failed to succesfully post query to Root" ) ?;
100103
101- if !response. status ( ) . is_success ( ) {
102- return Err ( anyhow ! (
103- "Server responded with an error: {:?}" ,
104- response. status( )
105- ) ) ;
106- }
104+ if !response. status ( ) . is_success ( ) {
105+ return Err ( anyhow ! (
106+ "Server responded with an error: {:?}" ,
107+ response. status( )
108+ ) ) ;
109+ }
107110
108- let response_json: serde_json:: Value = response
109- . json ( )
110- . await
111- . context ( "Failed to parse response JSON" ) ?;
112- debug ! ( "Response: {}" , response_json) ;
111+ let response_json: serde_json:: Value = response
112+ . json ( )
113+ . await
114+ . context ( "Failed to parse response JSON" ) ?;
115+ debug ! ( "Response: {}" , response_json) ;
113116
114- if let Some ( data) = response_json
115- . get ( "data" )
116- . and_then ( |data| data. get ( "resetStreak" ) )
117- {
118- let current_streak =
119- data . get ( "currentStreak" )
117+ if let Some ( data) = response_json
118+ . get ( "data" )
119+ . and_then ( |data| data. get ( "resetStreak" ) )
120+ {
121+ let current_streak = data
122+ . get ( "currentStreak" )
120123 . and_then ( |v| v. as_i64 ( ) )
121- . ok_or_else ( || anyhow ! ( "current_streak was parsed as None" ) ) ? as i32 ;
122- let max_streak =
123- data. get ( "maxStreak" )
124+ . ok_or_else ( || anyhow ! ( "current_streak was parsed as None" ) ) ?
125+ as i32 ;
126+ let max_streak = data
127+ . get ( "maxStreak" )
124128 . and_then ( |v| v. as_i64 ( ) )
125- . ok_or_else ( || anyhow ! ( "max_streak was parsed as None" ) ) ? as i32 ;
129+ . ok_or_else ( || anyhow ! ( "max_streak was parsed as None" ) ) ?
130+ as i32 ;
126131
127- if member. streak . is_empty ( ) {
128- member. streak . push ( Streak {
129- current_streak,
130- max_streak,
131- } ) ;
132- } else {
133- for streak in & mut member. streak {
134- streak. current_streak = current_streak;
135- streak. max_streak = max_streak;
132+ if member. streak . is_empty ( ) {
133+ member. streak . push ( Streak {
134+ current_streak,
135+ max_streak,
136+ } ) ;
137+ } else {
138+ for streak in & mut member. streak {
139+ streak. current_streak = current_streak;
140+ streak. max_streak = max_streak;
141+ }
136142 }
143+ } else {
144+ return Err ( anyhow ! ( "Failed to access data from {}" , response_json) ) ;
137145 }
138- } else {
139- return Err ( anyhow ! ( "Failed to access data from {}" , response_json) ) ;
140- }
141146
142- Ok ( ( ) )
147+ Ok ( ( ) )
148+ }
143149}
0 commit comments