@@ -6,7 +6,6 @@ use axum_extra::json;
6
6
use axum_extra:: response:: ErasedJson ;
7
7
use diesel:: dsl:: { exists, sql, InnerJoinQuerySource , LeftJoinQuerySource } ;
8
8
use diesel:: sql_types:: { Array , Bool , Text } ;
9
- use diesel_async:: async_connection_wrapper:: AsyncConnectionWrapper ;
10
9
use diesel_async:: AsyncPgConnection ;
11
10
use diesel_full_text_search:: * ;
12
11
use http:: request:: Parts ;
@@ -49,9 +48,7 @@ use crate::util::RequestUtils;
49
48
pub async fn search ( app : AppState , req : Parts ) -> AppResult < ErasedJson > {
50
49
use diesel_async:: RunQueryDsl ;
51
50
52
- let conn = app. db_read ( ) . await ?;
53
-
54
- let conn: & mut AsyncConnectionWrapper < _ > = & mut conn. into ( ) ;
51
+ let mut conn = app. db_read ( ) . await ?;
55
52
56
53
use diesel:: sql_types:: Float ;
57
54
use seek:: * ;
@@ -95,7 +92,7 @@ pub async fn search(app: AppState, req: Parts) -> AppResult<ErasedJson> {
95
92
96
93
let mut seek: Option < Seek > = None ;
97
94
let mut query = filter_params
98
- . make_query ( & req, conn)
95
+ . make_query ( & req, & mut conn)
99
96
. await ?
100
97
. inner_join ( crate_downloads:: table)
101
98
. left_join ( recent_crate_downloads:: table)
@@ -177,7 +174,7 @@ pub async fn search(app: AppState, req: Parts) -> AppResult<ErasedJson> {
177
174
// To avoid breaking existing users, seek-based pagination is only used if an explicit page has
178
175
// not been provided. This way clients relying on meta.next_page will use the faster seek-based
179
176
// 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 ( ) {
181
178
let seek = seek. unwrap ( ) ;
182
179
if let Some ( condition) = seek
183
180
. after ( & pagination. page ) ?
@@ -192,29 +189,27 @@ pub async fn search(app: AppState, req: Parts) -> AppResult<ErasedJson> {
192
189
//
193
190
// If this becomes a problem in the future the crates count could be denormalized, at least
194
191
// 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 ( ) ;
196
193
let query = query. pages_pagination_with_count_query ( pagination, count_query) ;
197
194
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 ?;
199
196
(
200
197
data. total ( ) ,
201
198
data. next_seek_params ( |last| seek. to_payload ( last) ) ?
202
199
. map ( |p| req. query_with_params ( p) ) ,
203
200
None ,
204
201
data. into_iter ( ) . collect :: < Vec < _ > > ( ) ,
205
- conn,
206
202
)
207
203
} 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 ( ) ;
209
205
let query = query. pages_pagination_with_count_query ( pagination, count_query) ;
210
206
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 ?;
212
208
(
213
209
data. total ( ) ,
214
210
data. next_page_params ( ) . map ( |p| req. query_with_params ( p) ) ,
215
211
data. prev_page_params ( ) . map ( |p| req. query_with_params ( p) ) ,
216
212
data. into_iter ( ) . collect :: < Vec < _ > > ( ) ,
217
- conn,
218
213
)
219
214
} ;
220
215
@@ -223,7 +218,7 @@ pub async fn search(app: AppState, req: Parts) -> AppResult<ErasedJson> {
223
218
let span = info_span ! ( "db.query" , message = "SELECT ... FROM versions" ) ;
224
219
let versions: Vec < Version > = Version :: belonging_to ( & crates)
225
220
. filter ( versions:: yanked. eq ( false ) )
226
- . load ( conn)
221
+ . load ( & mut conn)
227
222
. instrument ( span)
228
223
. await ?;
229
224
let versions = versions
0 commit comments