Skip to content

Commit c888aff

Browse files
committed
models/default_versions: Remove sync fns
1 parent 60cf31c commit c888aff

File tree

6 files changed

+19
-115
lines changed

6 files changed

+19
-115
lines changed

src/bin/crates-admin/default_versions.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use anyhow::Context;
2-
use crates_io::models::{async_update_default_version, async_verify_default_version};
2+
use crates_io::models::{update_default_version, verify_default_version};
33
use crates_io::{db, schema::crates};
44
use diesel::prelude::*;
55
use diesel_async::RunQueryDsl;
@@ -33,8 +33,8 @@ pub async fn run(command: Command) -> anyhow::Result<()> {
3333

3434
for crate_id in crate_ids.into_iter().progress_with(pb.clone()) {
3535
let result = match command {
36-
Command::Update => async_update_default_version(crate_id, &mut conn).await,
37-
Command::Verify => async_verify_default_version(crate_id, &mut conn).await,
36+
Command::Update => update_default_version(crate_id, &mut conn).await,
37+
Command::Verify => verify_default_version(crate_id, &mut conn).await,
3838
};
3939

4040
if let Err(error) = result {

src/bin/crates-admin/delete_version.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::dialoguer;
22
use anyhow::Context;
3-
use crates_io::models::async_update_default_version;
3+
use crates_io::models::update_default_version;
44
use crates_io::schema::crates;
55
use crates_io::storage::Storage;
66
use crates_io::worker::jobs;
@@ -85,7 +85,7 @@ pub async fn run(opts: Opts) -> anyhow::Result<()> {
8585
}
8686

8787
info!(%crate_name, %crate_id, "Updating default version in the database");
88-
if let Err(error) = async_update_default_version(crate_id, conn).await {
88+
if let Err(error) = update_default_version(crate_id, conn).await {
8989
warn!(%crate_name, %crate_id, ?error, "Failed to update default version");
9090
}
9191

src/models.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
pub use self::action::{NewVersionOwnerAction, VersionAction, VersionOwnerAction};
22
pub use self::category::{Category, CrateCategory, NewCategory};
33
pub use self::crate_owner_invitation::{CrateOwnerInvitation, NewCrateOwnerInvitationOutcome};
4-
pub use self::default_versions::{
5-
async_update_default_version, async_verify_default_version, update_default_version,
6-
verify_default_version,
7-
};
4+
pub use self::default_versions::{update_default_version, verify_default_version};
85
pub use self::deleted_crate::NewDeletedCrate;
96
pub use self::dependency::{Dependency, DependencyKind, ReverseDependency};
107
pub use self::download::VersionDownload;

src/models/default_versions.rs

Lines changed: 9 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use crate::schema::{default_versions, versions};
22
use crate::sql::SemverVersion;
3-
use crate::util::diesel::prelude::*;
4-
use crate::util::diesel::Conn;
5-
use diesel_async::AsyncPgConnection;
3+
use diesel::prelude::*;
4+
use diesel_async::{AsyncPgConnection, RunQueryDsl};
65

76
/// A subset of the columns of the `versions` table.
87
///
@@ -57,13 +56,11 @@ impl Ord for Version {
5756
///
5857
/// The default version is then written to the `default_versions` table.
5958
#[instrument(skip(conn))]
60-
pub async fn async_update_default_version(
59+
pub async fn update_default_version(
6160
crate_id: i32,
6261
conn: &mut AsyncPgConnection,
6362
) -> QueryResult<()> {
64-
use diesel_async::RunQueryDsl;
65-
66-
let default_version = async_calculate_default_version(crate_id, conn).await?;
63+
let default_version = calculate_default_version(crate_id, conn).await?;
6764

6865
debug!(
6966
"Updating default version to {} (id: {})…",
@@ -84,49 +81,13 @@ pub async fn async_update_default_version(
8481
Ok(())
8582
}
8683

87-
/// Updates the `default_versions` table entry for the specified crate.
88-
///
89-
/// This function first loads all versions of the crate from the database,
90-
/// then determines the default version based on the following criteria:
91-
///
92-
/// 1. The highest non-prerelease version that is not yanked.
93-
/// 2. The highest non-yanked version.
94-
/// 3. The highest version.
95-
///
96-
/// The default version is then written to the `default_versions` table.
97-
#[instrument(skip(conn))]
98-
pub fn update_default_version(crate_id: i32, conn: &mut impl Conn) -> QueryResult<()> {
99-
use diesel::RunQueryDsl;
100-
101-
let default_version = calculate_default_version(crate_id, conn)?;
102-
103-
debug!(
104-
"Updating default version to {} (id: {})…",
105-
default_version.num, default_version.id
106-
);
107-
108-
diesel::insert_into(default_versions::table)
109-
.values((
110-
default_versions::crate_id.eq(crate_id),
111-
default_versions::version_id.eq(default_version.id),
112-
))
113-
.on_conflict(default_versions::crate_id)
114-
.do_update()
115-
.set(default_versions::version_id.eq(default_version.id))
116-
.execute(conn)?;
117-
118-
Ok(())
119-
}
120-
12184
/// Verifies that the default version for the specified crate is up-to-date.
12285
#[instrument(skip(conn))]
123-
pub async fn async_verify_default_version(
86+
pub async fn verify_default_version(
12487
crate_id: i32,
12588
conn: &mut AsyncPgConnection,
12689
) -> QueryResult<()> {
127-
use diesel_async::RunQueryDsl;
128-
129-
let calculated = async_calculate_default_version(crate_id, conn).await?;
90+
let calculated = calculate_default_version(crate_id, conn).await?;
13091

13192
let saved = default_versions::table
13293
.select(default_versions::version_id)
@@ -154,44 +115,11 @@ pub async fn async_verify_default_version(
154115
Ok(())
155116
}
156117

157-
/// Verifies that the default version for the specified crate is up-to-date.
158-
#[instrument(skip(conn))]
159-
pub fn verify_default_version(crate_id: i32, conn: &mut impl Conn) -> QueryResult<()> {
160-
use diesel::RunQueryDsl;
161-
162-
let calculated = calculate_default_version(crate_id, conn)?;
163-
164-
let saved = default_versions::table
165-
.select(default_versions::version_id)
166-
.filter(default_versions::crate_id.eq(crate_id))
167-
.first::<i32>(conn)
168-
.optional()?;
169-
170-
if let Some(saved) = saved {
171-
if saved == calculated.id {
172-
debug!("Default version for crate {crate_id} is up to date");
173-
} else {
174-
warn!(
175-
"Default version for crate {crate_id} is outdated (expected: {saved}, actual: {})",
176-
calculated.id,
177-
);
178-
}
179-
} else {
180-
warn!(
181-
"Default version for crate {crate_id} is missing (expected: {})",
182-
calculated.id
183-
);
184-
}
185-
186-
Ok(())
187-
}
188-
189-
async fn async_calculate_default_version(
118+
async fn calculate_default_version(
190119
crate_id: i32,
191120
conn: &mut AsyncPgConnection,
192121
) -> QueryResult<Version> {
193122
use diesel::result::Error::NotFound;
194-
use diesel_async::RunQueryDsl;
195123

196124
debug!("Loading all versions for the crate…");
197125
let versions = versions::table
@@ -205,21 +133,6 @@ async fn async_calculate_default_version(
205133
versions.into_iter().max().ok_or(NotFound)
206134
}
207135

208-
fn calculate_default_version(crate_id: i32, conn: &mut impl Conn) -> QueryResult<Version> {
209-
use diesel::result::Error::NotFound;
210-
use diesel::RunQueryDsl;
211-
212-
debug!("Loading all versions for the crate…");
213-
let versions = versions::table
214-
.filter(versions::crate_id.eq(crate_id))
215-
.select(Version::as_returning())
216-
.load::<Version>(conn)?;
217-
218-
debug!("Found {} versions", versions.len());
219-
220-
versions.into_iter().max().ok_or(NotFound)
221-
}
222-
223136
#[cfg(test)]
224137
mod tests {
225138
use super::*;
@@ -332,8 +245,6 @@ mod tests {
332245
}
333246

334247
async fn create_crate(name: &str, conn: &mut AsyncPgConnection) -> i32 {
335-
use diesel_async::RunQueryDsl;
336-
337248
diesel::insert_into(crates::table)
338249
.values(crates::name.eq(name))
339250
.returning(crates::id)
@@ -343,8 +254,6 @@ mod tests {
343254
}
344255

345256
async fn create_version(crate_id: i32, num: &str, conn: &mut AsyncPgConnection) {
346-
use diesel_async::RunQueryDsl;
347-
348257
diesel::insert_into(versions::table)
349258
.values((
350259
versions::crate_id.eq(crate_id),
@@ -359,8 +268,6 @@ mod tests {
359268
}
360269

361270
async fn get_default_version(crate_id: i32, conn: &mut AsyncPgConnection) -> String {
362-
use diesel_async::RunQueryDsl;
363-
364271
default_versions::table
365272
.inner_join(versions::table)
366273
.select(versions::num)
@@ -378,14 +285,14 @@ mod tests {
378285
let crate_id = create_crate("foo", conn).await;
379286
create_version(crate_id, "1.0.0", conn).await;
380287

381-
async_update_default_version(crate_id, conn).await.unwrap();
288+
update_default_version(crate_id, conn).await.unwrap();
382289
assert_eq!(get_default_version(crate_id, conn).await, "1.0.0");
383290

384291
create_version(crate_id, "1.1.0", conn).await;
385292
create_version(crate_id, "1.0.1", conn).await;
386293
assert_eq!(get_default_version(crate_id, conn).await, "1.0.0");
387294

388-
async_update_default_version(crate_id, conn).await.unwrap();
295+
update_default_version(crate_id, conn).await.unwrap();
389296
assert_eq!(get_default_version(crate_id, conn).await, "1.1.0");
390297
}
391298
}

src/tests/builders/krate.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::{
55
};
66

77
use super::VersionBuilder;
8-
use crate::models::async_update_default_version;
8+
use crate::models::update_default_version;
99
use crate::schema::crate_downloads;
1010
use crate::util::diesel::prelude::*;
1111
use chrono::NaiveDateTime;
@@ -177,7 +177,7 @@ impl<'a> CrateBuilder<'a> {
177177
.await?;
178178
}
179179

180-
async_update_default_version(krate.id, connection).await?;
180+
update_default_version(krate.id, connection).await?;
181181

182182
Ok(krate)
183183
}

src/worker/jobs/update_default_version.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::models::async_update_default_version;
1+
use crate::models::update_default_version;
22
use crate::worker::Environment;
33
use crates_io_worker::BackgroundJob;
44
use std::sync::Arc;
@@ -26,7 +26,7 @@ impl BackgroundJob for UpdateDefaultVersion {
2626

2727
info!("Updating default version for crate {crate_id}");
2828
let mut conn = ctx.deadpool.get().await?;
29-
async_update_default_version(crate_id, &mut conn).await?;
29+
update_default_version(crate_id, &mut conn).await?;
3030

3131
Ok(())
3232
}

0 commit comments

Comments
 (0)