@@ -41,29 +41,25 @@ pub async fn list(
4141 Query ( params) : Query < GetParams > ,
4242 req : Parts ,
4343) -> AppResult < Json < Value > > {
44+ use diesel_async:: RunQueryDsl ;
45+
4446 let mut conn = app. db_read_prefer_primary ( ) . await ?;
4547 let auth = AuthCheck :: only_cookie ( ) . check ( & req, & mut conn) . await ?;
46- spawn_blocking ( move || {
47- use diesel:: RunQueryDsl ;
48-
49- let conn: & mut AsyncConnectionWrapper < _ > = & mut conn. into ( ) ;
50-
51- let user = auth. user ( ) ;
48+ let user = auth. user ( ) ;
49+
50+ let tokens: Vec < ApiToken > = ApiToken :: belonging_to ( user)
51+ . select ( ApiToken :: as_select ( ) )
52+ . filter ( api_tokens:: revoked. eq ( false ) )
53+ . filter (
54+ api_tokens:: expired_at. is_null ( ) . or ( api_tokens:: expired_at
55+ . assume_not_null ( )
56+ . gt ( now - params. expired_days_interval ( ) ) ) ,
57+ )
58+ . order ( api_tokens:: id. desc ( ) )
59+ . load ( & mut conn)
60+ . await ?;
5261
53- let tokens: Vec < ApiToken > = ApiToken :: belonging_to ( user)
54- . select ( ApiToken :: as_select ( ) )
55- . filter ( api_tokens:: revoked. eq ( false ) )
56- . filter (
57- api_tokens:: expired_at. is_null ( ) . or ( api_tokens:: expired_at
58- . assume_not_null ( )
59- . gt ( now - params. expired_days_interval ( ) ) ) ,
60- )
61- . order ( api_tokens:: id. desc ( ) )
62- . load ( conn) ?;
63-
64- Ok ( Json ( json ! ( { "api_tokens" : tokens } ) ) )
65- } )
66- . await
62+ Ok ( Json ( json ! ( { "api_tokens" : tokens } ) ) )
6763}
6864
6965/// The incoming serialization format for the `ApiToken` model.
@@ -175,63 +171,51 @@ pub async fn new(
175171
176172/// Handles the `GET /me/tokens/:id` route.
177173pub async fn show ( app : AppState , Path ( id) : Path < i32 > , req : Parts ) -> AppResult < Json < Value > > {
174+ use diesel_async:: RunQueryDsl ;
175+
178176 let mut conn = app. db_write ( ) . await ?;
179177 let auth = AuthCheck :: default ( ) . check ( & req, & mut conn) . await ?;
180- spawn_blocking ( move || {
181- use diesel:: RunQueryDsl ;
182-
183- let conn: & mut AsyncConnectionWrapper < _ > = & mut conn. into ( ) ;
184-
185- let user = auth. user ( ) ;
186- let token = ApiToken :: belonging_to ( user)
187- . find ( id)
188- . select ( ApiToken :: as_select ( ) )
189- . first ( conn) ?;
190-
191- Ok ( Json ( json ! ( { "api_token" : token } ) ) )
192- } )
193- . await
178+ let user = auth. user ( ) ;
179+ let token = ApiToken :: belonging_to ( user)
180+ . find ( id)
181+ . select ( ApiToken :: as_select ( ) )
182+ . first ( & mut conn)
183+ . await ?;
184+
185+ Ok ( Json ( json ! ( { "api_token" : token } ) ) )
194186}
195187
196188/// Handles the `DELETE /me/tokens/:id` route.
197189pub async fn revoke ( app : AppState , Path ( id) : Path < i32 > , req : Parts ) -> AppResult < Json < Value > > {
190+ use diesel_async:: RunQueryDsl ;
191+
198192 let mut conn = app. db_write ( ) . await ?;
199193 let auth = AuthCheck :: default ( ) . check ( & req, & mut conn) . await ?;
200- spawn_blocking ( move || {
201- use diesel:: RunQueryDsl ;
194+ let user = auth. user ( ) ;
195+ diesel:: update ( ApiToken :: belonging_to ( user) . find ( id) )
196+ . set ( api_tokens:: revoked. eq ( true ) )
197+ . execute ( & mut conn)
198+ . await ?;
202199
203- let conn: & mut AsyncConnectionWrapper < _ > = & mut conn. into ( ) ;
204-
205- let user = auth. user ( ) ;
206- diesel:: update ( ApiToken :: belonging_to ( user) . find ( id) )
207- . set ( api_tokens:: revoked. eq ( true ) )
208- . execute ( conn) ?;
209-
210- Ok ( Json ( json ! ( { } ) ) )
211- } )
212- . await
200+ Ok ( Json ( json ! ( { } ) ) )
213201}
214202
215203/// Handles the `DELETE /tokens/current` route.
216204pub async fn revoke_current ( app : AppState , req : Parts ) -> AppResult < Response > {
205+ use diesel_async:: RunQueryDsl ;
206+
217207 let mut conn = app. db_write ( ) . await ?;
218208 let auth = AuthCheck :: default ( ) . check ( & req, & mut conn) . await ?;
219- spawn_blocking ( move || {
220- use diesel:: RunQueryDsl ;
209+ let api_token_id = auth
210+ . api_token_id ( )
211+ . ok_or_else ( || bad_request ( "token not provided" ) ) ?;
221212
222- let conn: & mut AsyncConnectionWrapper < _ > = & mut conn. into ( ) ;
213+ diesel:: update ( api_tokens:: table. filter ( api_tokens:: id. eq ( api_token_id) ) )
214+ . set ( api_tokens:: revoked. eq ( true ) )
215+ . execute ( & mut conn)
216+ . await ?;
223217
224- let api_token_id = auth
225- . api_token_id ( )
226- . ok_or_else ( || bad_request ( "token not provided" ) ) ?;
227-
228- diesel:: update ( api_tokens:: table. filter ( api_tokens:: id. eq ( api_token_id) ) )
229- . set ( api_tokens:: revoked. eq ( true ) )
230- . execute ( conn) ?;
231-
232- Ok ( StatusCode :: NO_CONTENT . into_response ( ) )
233- } )
234- . await
218+ Ok ( StatusCode :: NO_CONTENT . into_response ( ) )
235219}
236220
237221struct NewTokenEmail < ' a > {
0 commit comments