Skip to content

Commit 80e44a8

Browse files
committed
models/action: Migrate VersionOwnerAction::by_version() to async/await
1 parent 33b36c3 commit 80e44a8

File tree

2 files changed

+12
-22
lines changed

2 files changed

+12
-22
lines changed

src/controllers/version/metadata.rs

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ use axum_extra::json;
1010
use axum_extra::response::ErasedJson;
1111
use crates_io_database::schema::{crates, dependencies};
1212
use crates_io_worker::BackgroundJob;
13-
use diesel_async::async_connection_wrapper::AsyncConnectionWrapper;
1413
use diesel_async::AsyncPgConnection;
1514
use http::request::Parts;
1615
use http::StatusCode;
@@ -24,7 +23,6 @@ use crate::models::{
2423
};
2524
use crate::rate_limiter::LimitedAction;
2625
use crate::schema::versions;
27-
use crate::tasks::spawn_blocking;
2826
use crate::util::diesel::prelude::*;
2927
use crate::util::errors::{bad_request, custom, version_not_found, AppResult};
3028
use crate::views::{EncodableDependency, EncodableVersion};
@@ -101,16 +99,10 @@ pub async fn show(
10199
let mut conn = state.db_read().await?;
102100
let (version, krate) = version_and_crate(&mut conn, &crate_name, &version).await?;
103101
let published_by = version.published_by(&mut conn).await?;
102+
let actions = VersionOwnerAction::by_version(&mut conn, &version).await?;
104103

105-
spawn_blocking(move || {
106-
let conn: &mut AsyncConnectionWrapper<_> = &mut conn.into();
107-
108-
let actions = VersionOwnerAction::by_version(conn, &version)?;
109-
110-
let version = EncodableVersion::from(version, &krate.name, published_by, actions);
111-
Ok(json!({ "version": version }))
112-
})
113-
.await
104+
let version = EncodableVersion::from(version, &krate.name, published_by, actions);
105+
Ok(json!({ "version": version }))
114106
}
115107

116108
/// Handles the `PATCH /crates/:crate/:version` route.
@@ -148,15 +140,9 @@ pub async fn update(
148140
.await?;
149141

150142
let published_by = version.published_by(&mut conn).await?;
151-
152-
spawn_blocking(move || {
153-
let conn: &mut AsyncConnectionWrapper<_> = &mut conn.into();
154-
155-
let actions = VersionOwnerAction::by_version(conn, &version)?;
156-
let updated_version = EncodableVersion::from(version, &krate.name, published_by, actions);
157-
Ok(json!({ "version": updated_version }))
158-
})
159-
.await
143+
let actions = VersionOwnerAction::by_version(&mut conn, &version).await?;
144+
let updated_version = EncodableVersion::from(version, &krate.name, published_by, actions);
145+
Ok(json!({ "version": updated_version }))
160146
}
161147

162148
fn validate_yank_update(update_data: &VersionUpdate, version: &Version) -> AppResult<()> {

src/models/action.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,19 @@ impl VersionOwnerAction {
5757
version_owner_actions::table.load(conn)
5858
}
5959

60-
pub fn by_version(conn: &mut impl Conn, version: &Version) -> QueryResult<Vec<(Self, User)>> {
61-
use diesel::RunQueryDsl;
60+
pub async fn by_version(
61+
conn: &mut AsyncPgConnection,
62+
version: &Version,
63+
) -> QueryResult<Vec<(Self, User)>> {
64+
use diesel_async::RunQueryDsl;
6265
use version_owner_actions::dsl::version_id;
6366

6467
version_owner_actions::table
6568
.filter(version_id.eq(version.id))
6669
.inner_join(users::table)
6770
.order(version_owner_actions::dsl::id)
6871
.load(conn)
72+
.await
6973
}
7074

7175
pub fn for_versions(

0 commit comments

Comments
 (0)