@@ -6,7 +6,6 @@ use axum_extra::json;
66use axum_extra:: response:: ErasedJson ;
77use diesel:: dsl:: { exists, sql, InnerJoinQuerySource , LeftJoinQuerySource } ;
88use diesel:: sql_types:: { Array , Bool , Text } ;
9- use diesel_async:: async_connection_wrapper:: AsyncConnectionWrapper ;
109use diesel_async:: AsyncPgConnection ;
1110use diesel_full_text_search:: * ;
1211use http:: request:: Parts ;
@@ -49,9 +48,7 @@ use crate::util::RequestUtils;
4948pub async fn search ( app : AppState , req : Parts ) -> AppResult < ErasedJson > {
5049 use diesel_async:: RunQueryDsl ;
5150
52- let conn = app. db_read ( ) . await ?;
53-
54- let conn: & mut AsyncConnectionWrapper < _ > = & mut conn. into ( ) ;
51+ let mut conn = app. db_read ( ) . await ?;
5552
5653 use diesel:: sql_types:: Float ;
5754 use seek:: * ;
@@ -95,7 +92,7 @@ pub async fn search(app: AppState, req: Parts) -> AppResult<ErasedJson> {
9592
9693 let mut seek: Option < Seek > = None ;
9794 let mut query = filter_params
98- . make_query ( & req, conn)
95+ . make_query ( & req, & mut conn)
9996 . await ?
10097 . inner_join ( crate_downloads:: table)
10198 . left_join ( recent_crate_downloads:: table)
@@ -177,7 +174,7 @@ pub async fn search(app: AppState, req: Parts) -> AppResult<ErasedJson> {
177174 // To avoid breaking existing users, seek-based pagination is only used if an explicit page has
178175 // not been provided. This way clients relying on meta.next_page will use the faster seek-based
179176 // paginations, while client hardcoding pages handling will use the slower offset-based code.
180- let ( total, next_page, prev_page, data, conn ) = if !explicit_page && seek. is_some ( ) {
177+ let ( total, next_page, prev_page, data) = if !explicit_page && seek. is_some ( ) {
181178 let seek = seek. unwrap ( ) ;
182179 if let Some ( condition) = seek
183180 . after ( & pagination. page ) ?
@@ -192,29 +189,27 @@ pub async fn search(app: AppState, req: Parts) -> AppResult<ErasedJson> {
192189 //
193190 // If this becomes a problem in the future the crates count could be denormalized, at least
194191 // for the filterless happy path.
195- let count_query = filter_params. make_query ( & req, conn) . await ?. count ( ) ;
192+ let count_query = filter_params. make_query ( & req, & mut conn) . await ?. count ( ) ;
196193 let query = query. pages_pagination_with_count_query ( pagination, count_query) ;
197194 let span = info_span ! ( "db.query" , message = "SELECT ..., COUNT(*) FROM crates" ) ;
198- let data = query. load :: < Record > ( conn) . instrument ( span) . await ?;
195+ let data = query. load :: < Record > ( & mut conn) . instrument ( span) . await ?;
199196 (
200197 data. total ( ) ,
201198 data. next_seek_params ( |last| seek. to_payload ( last) ) ?
202199 . map ( |p| req. query_with_params ( p) ) ,
203200 None ,
204201 data. into_iter ( ) . collect :: < Vec < _ > > ( ) ,
205- conn,
206202 )
207203 } else {
208- let count_query = filter_params. make_query ( & req, conn) . await ?. count ( ) ;
204+ let count_query = filter_params. make_query ( & req, & mut conn) . await ?. count ( ) ;
209205 let query = query. pages_pagination_with_count_query ( pagination, count_query) ;
210206 let span = info_span ! ( "db.query" , message = "SELECT ..., COUNT(*) FROM crates" ) ;
211- let data = query. load :: < Record > ( conn) . instrument ( span) . await ?;
207+ let data = query. load :: < Record > ( & mut conn) . instrument ( span) . await ?;
212208 (
213209 data. total ( ) ,
214210 data. next_page_params ( ) . map ( |p| req. query_with_params ( p) ) ,
215211 data. prev_page_params ( ) . map ( |p| req. query_with_params ( p) ) ,
216212 data. into_iter ( ) . collect :: < Vec < _ > > ( ) ,
217- conn,
218213 )
219214 } ;
220215
@@ -223,7 +218,7 @@ pub async fn search(app: AppState, req: Parts) -> AppResult<ErasedJson> {
223218 let span = info_span ! ( "db.query" , message = "SELECT ... FROM versions" ) ;
224219 let versions: Vec < Version > = Version :: belonging_to ( & crates)
225220 . filter ( versions:: yanked. eq ( false ) )
226- . load ( conn)
221+ . load ( & mut conn)
227222 . instrument ( span)
228223 . await ?;
229224 let versions = versions
0 commit comments