diff --git a/src/index.rs b/src/index.rs index c3d9a0770d2..0ee06a62d24 100644 --- a/src/index.rs +++ b/src/index.rs @@ -4,21 +4,33 @@ use crate::models::{Crate, CrateVersions, Dependency, Version}; use crate::schema::{crates, dependencies}; -use crate::util::diesel::Conn; use anyhow::Context; use crates_io_index::features::split_features; use diesel::prelude::*; +use diesel_async::{AsyncPgConnection, RunQueryDsl}; use sentry::Level; #[instrument(skip_all, fields(krate.name = ?name))] -pub fn get_index_data(name: &str, conn: &mut impl Conn) -> anyhow::Result> { +pub async fn get_index_data( + name: &str, + conn: &mut AsyncPgConnection, +) -> anyhow::Result> { debug!("Looking up crate by name"); - let Some(krate): Option = Crate::by_exact_name(name).first(conn).optional()? else { + let krate = crates::table + .select(Crate::as_select()) + .filter(crates::name.eq(name)) + .first::(conn) + .await + .optional(); + + let Some(krate) = krate? else { return Ok(None); }; debug!("Gathering remaining index data"); - let crates = index_metadata(&krate, conn).context("Failed to gather index metadata")?; + let crates = index_metadata(&krate, conn) + .await + .context("Failed to gather index metadata")?; // This can sometimes happen when we delete versions upon owner request // but don't realize that the crate is now left with no versions at all. @@ -43,11 +55,11 @@ pub fn get_index_data(name: &str, conn: &mut impl Conn) -> anyhow::Result