@@ -8,10 +8,6 @@ use axum::extract::Path;
88use axum:: Json ;
99use crates_io_database:: schema:: { crates, dependencies} ;
1010use crates_io_worker:: BackgroundJob ;
11- use diesel:: {
12- BelongingToDsl , BoolExpressionMethods , ExpressionMethods , PgExpressionMethods , QueryDsl ,
13- RunQueryDsl , SelectableHelper ,
14- } ;
1511use diesel_async:: async_connection_wrapper:: AsyncConnectionWrapper ;
1612use http:: request:: Parts ;
1713use http:: StatusCode ;
@@ -29,6 +25,7 @@ use crate::models::{
2925use crate :: rate_limiter:: LimitedAction ;
3026use crate :: schema:: versions;
3127use crate :: tasks:: spawn_blocking;
28+ use crate :: util:: diesel:: prelude:: * ;
3229use crate :: util:: diesel:: Conn ;
3330use crate :: util:: errors:: { bad_request, custom, version_not_found, AppResult } ;
3431use crate :: views:: { EncodableDependency , EncodableVersion } ;
@@ -57,27 +54,26 @@ pub async fn dependencies(
5754 state : AppState ,
5855 Path ( ( crate_name, version) ) : Path < ( String , String ) > ,
5956) -> AppResult < Json < Value > > {
57+ use diesel_async:: RunQueryDsl ;
58+
6059 if semver:: Version :: parse ( & version) . is_err ( ) {
6160 return Err ( version_not_found ( & crate_name, & version) ) ;
6261 }
6362
6463 let mut conn = state. db_read ( ) . await ?;
6564 let ( version, _) = version_and_crate ( & mut conn, & crate_name, & version) . await ?;
66- spawn_blocking ( move || {
67- let conn: & mut AsyncConnectionWrapper < _ > = & mut conn. into ( ) ;
6865
69- let deps = Dependency :: belonging_to ( & version)
70- . inner_join ( crates:: table)
71- . select ( ( Dependency :: as_select ( ) , crates:: name) )
72- . order ( ( dependencies:: optional, crates:: name) )
73- . load :: < ( Dependency , String ) > ( conn) ?
74- . into_iter ( )
75- . map ( |( dep, crate_name) | EncodableDependency :: from_dep ( dep, & crate_name) )
76- . collect :: < Vec < _ > > ( ) ;
77-
78- Ok ( Json ( json ! ( { "dependencies" : deps } ) ) )
79- } )
80- . await
66+ let deps = Dependency :: belonging_to ( & version)
67+ . inner_join ( crates:: table)
68+ . select ( ( Dependency :: as_select ( ) , crates:: name) )
69+ . order ( ( dependencies:: optional, crates:: name) )
70+ . load :: < ( Dependency , String ) > ( & mut conn)
71+ . await ?
72+ . into_iter ( )
73+ . map ( |( dep, crate_name) | EncodableDependency :: from_dep ( dep, & crate_name) )
74+ . collect :: < Vec < _ > > ( ) ;
75+
76+ Ok ( Json ( json ! ( { "dependencies" : deps } ) ) )
8177}
8278
8379/// Handles the `GET /crates/:crate_id/:version/authors` route.
@@ -179,6 +175,8 @@ pub fn perform_version_yank_update(
179175 yanked : Option < bool > ,
180176 yank_message : Option < String > ,
181177) -> AppResult < ( ) > {
178+ use diesel:: RunQueryDsl ;
179+
182180 let auth = AuthCheck :: default ( )
183181 . with_endpoint_scope ( EndpointScope :: Yank )
184182 . for_crate ( & krate. name )
0 commit comments