Skip to content

Commit 81d2332

Browse files
committed
controllers/version/metadata: Remove spawn_blocking() call from dependencies() fn
1 parent e1bd572 commit 81d2332

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

src/controllers/version/metadata.rs

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ use axum::extract::Path;
88
use axum::Json;
99
use crates_io_database::schema::{crates, dependencies};
1010
use crates_io_worker::BackgroundJob;
11-
use diesel::{
12-
BelongingToDsl, BoolExpressionMethods, ExpressionMethods, PgExpressionMethods, QueryDsl,
13-
RunQueryDsl, SelectableHelper,
14-
};
1511
use diesel_async::async_connection_wrapper::AsyncConnectionWrapper;
1612
use http::request::Parts;
1713
use http::StatusCode;
@@ -29,6 +25,7 @@ use crate::models::{
2925
use crate::rate_limiter::LimitedAction;
3026
use crate::schema::versions;
3127
use crate::tasks::spawn_blocking;
28+
use crate::util::diesel::prelude::*;
3229
use crate::util::diesel::Conn;
3330
use crate::util::errors::{bad_request, custom, version_not_found, AppResult};
3431
use 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

Comments
 (0)