Skip to content

Commit

Permalink
fix(owners): add command to update all crate data
Browse files Browse the repository at this point in the history
  • Loading branch information
Tyrubias authored and syphar committed Jun 21, 2024
1 parent c1a09b7 commit 23b6124
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 1 deletion.
35 changes: 35 additions & 0 deletions src/bin/cratesfyi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ use humantime::Duration;
use once_cell::sync::OnceCell;
use sentry::TransactionContext;
use tokio::runtime::{Builder, Runtime};
use tracing::info;
use tracing_log::LogTracer;
use tracing_subscriber::{filter::Directive, prelude::*, EnvFilter};

Expand Down Expand Up @@ -515,6 +516,9 @@ enum DatabaseSubcommand {
/// Backfill GitHub/Gitlab stats for crates.
BackfillRepositoryStats,

/// Backfill crate owner kind from crates.io API
BackfillCrateOwnerKind,

/// Updates info for a crate from the registry's API
UpdateCrateRegistryFields {
#[arg(name = "CRATE")]
Expand Down Expand Up @@ -601,6 +605,37 @@ impl DatabaseSubcommand {
.block_on(ctx.repository_stats_updater()?.backfill_repositories())?;
}

Self::BackfillCrateOwnerKind => {
let pool = ctx.pool()?;
ctx.runtime()?
.block_on(async {
let mut list_crates_conn = pool.get_async().await?;
let mut update_crates_conn = pool.get_async().await?;

let mut result_stream =
sqlx::query!("SELECT id, name FROM crates ORDER BY name")
.fetch(&mut *list_crates_conn);

while let Some(row) = result_stream.next().await {
let row = row?;
let registry_data =
ctx.registry_api()?.get_crate_data(&row.name).await?;

info!("Updating crate {}", row.name);

db::update_crate_data_in_db_by_id(
&mut update_crates_conn,
row.id,
&registry_data,
)
.await?;
}

Ok::<(), anyhow::Error>(())
})
.context("Failed to backfill crate owner kind")?
}

Self::UpdateCrateRegistryFields { name } => ctx.runtime()?.block_on(async move {
let mut conn = ctx.pool()?.get_async().await?;
let registry_data = ctx.registry_api()?.get_crate_data(&name).await?;
Expand Down
10 changes: 10 additions & 0 deletions src/db/add_package.rs
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,16 @@ pub async fn update_crate_data_in_database(
.fetch_one(&mut *conn)
.await?;

update_crate_data_in_db_by_id(conn, crate_id, registry_data).await?;

Ok(())
}

pub async fn update_crate_data_in_db_by_id(
conn: &mut sqlx::PgConnection,
crate_id: i32,
registry_data: &CrateData,
) -> Result<()> {
update_owners_in_database(conn, &registry_data.owners, crate_id).await?;

Ok(())
Expand Down
4 changes: 3 additions & 1 deletion src/db/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ pub(crate) use self::add_package::{
add_build_into_database, add_doc_coverage, add_package_into_database,
};
pub use self::{
add_package::{update_build_status, update_crate_data_in_database},
add_package::{
update_build_status, update_crate_data_in_database, update_crate_data_in_db_by_id,
},
delete::{delete_crate, delete_version},
file::{add_path_into_database, add_path_into_remote_archive},
overrides::Overrides,
Expand Down

0 comments on commit 23b6124

Please sign in to comment.