Skip to content

Commit c8cdb58

Browse files
committed
Added crate_id to other jobs
1 parent 0f6c8f9 commit c8cdb58

File tree

10 files changed

+82
-43
lines changed

10 files changed

+82
-43
lines changed

rust-toolchain.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
[toolchain]
22
channel = "1.88.0"
3+
components = ["rust-analyzer"]

src/bin/crates-admin/delete_crate.rs

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -83,32 +83,37 @@ pub async fn run(opts: Opts) -> anyhow::Result<()> {
8383
let available_at = now + chrono::TimeDelta::hours(opts.availability_delay);
8484

8585
for name in &crate_names {
86-
if let Some(crate_info) = existing_crates.iter().find(|info| info.name == *name) {
87-
let id = crate_info.id;
88-
89-
let deleted_crate = NewDeletedCrate::builder(name)
90-
.created_at(&crate_info.created_at)
91-
.deleted_at(&now)
92-
.deleted_by(deleted_by.id)
93-
.maybe_message(opts.message.as_deref())
94-
.available_at(&available_at)
95-
.build();
96-
97-
info!("{name}: Deleting crate from the database…");
98-
let result = conn
99-
.transaction(|conn| delete_from_database(conn, id, deleted_crate).scope_boxed())
100-
.await;
101-
102-
if let Err(error) = result {
103-
warn!(%id, "{name}: Failed to delete crate from the database: {error}");
86+
let crate_id =
87+
if let Some(crate_info) = existing_crates.iter().find(|info| info.name == *name) {
88+
let id = crate_info.id;
89+
90+
let deleted_crate = NewDeletedCrate::builder(name)
91+
.created_at(&crate_info.created_at)
92+
.deleted_at(&now)
93+
.deleted_by(deleted_by.id)
94+
.maybe_message(opts.message.as_deref())
95+
.available_at(&available_at)
96+
.build();
97+
98+
info!("{name}: Deleting crate from the database…");
99+
let result = conn
100+
.transaction(|conn| delete_from_database(conn, id, deleted_crate).scope_boxed())
101+
.await;
102+
103+
if let Err(error) = result {
104+
warn!(%id, "{name}: Failed to delete crate from the database: {error}");
105+
};
106+
107+
Some(id)
108+
} else {
109+
info!("{name}: Skipped missing crate");
110+
111+
None
104112
};
105-
} else {
106-
info!("{name}: Skipped missing crate");
107-
};
108113

109114
info!("{name}: Enqueuing background jobs…");
110-
let git_index_job = jobs::SyncToGitIndex::new(name);
111-
let sparse_index_job = jobs::SyncToSparseIndex::new(name);
115+
let git_index_job = jobs::SyncToGitIndex::new_maybe_deleted(crate_id, name);
116+
let sparse_index_job = jobs::SyncToSparseIndex::new_maybe_deleted(crate_id, name);
112117
let delete_from_storage_job = jobs::DeleteCrateFromStorage::new(name.into());
113118

114119
if let Err(error) = tokio::try_join!(

src/bin/crates-admin/delete_version.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ pub async fn run(opts: Opts) -> anyhow::Result<()> {
9595
let crate_name = &opts.crate_name;
9696

9797
info!(%crate_name, "Enqueuing index sync jobs");
98-
let git_index_job = jobs::SyncToGitIndex::new(crate_name);
99-
let sparse_index_job = jobs::SyncToSparseIndex::new(crate_name);
98+
let git_index_job = jobs::SyncToGitIndex::new(crate_id, crate_name);
99+
let sparse_index_job = jobs::SyncToSparseIndex::new(crate_id, crate_name);
100100

101101
if let Err(error) = tokio::try_join!(
102102
git_index_job.enqueue(&mut conn),

src/bin/crates-admin/enqueue_job.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use crates_io::worker::jobs;
66
use crates_io_worker::BackgroundJob;
77
use diesel::dsl::exists;
88
use diesel::prelude::*;
9-
use diesel_async::RunQueryDsl;
9+
use diesel_async::{AsyncPgConnection, RunQueryDsl};
1010

1111
#[derive(clap::Parser, Debug)]
1212
#[command(
@@ -152,10 +152,12 @@ pub async fn run(command: Command) -> Result<()> {
152152
jobs::rss::SyncCratesFeed.enqueue(&mut conn).await?;
153153
}
154154
Command::SyncToGitIndex { name } => {
155-
jobs::SyncToGitIndex::new(name).enqueue(&mut conn).await?;
155+
jobs::SyncToGitIndex::new_maybe_deleted(crate_id(&name, &mut conn).await?, name)
156+
.enqueue(&mut conn)
157+
.await?;
156158
}
157159
Command::SyncToSparseIndex { name } => {
158-
jobs::SyncToSparseIndex::new(name)
160+
jobs::SyncToSparseIndex::new_maybe_deleted(crate_id(&name, &mut conn).await?, name)
159161
.enqueue(&mut conn)
160162
.await?;
161163
}
@@ -173,3 +175,12 @@ pub async fn run(command: Command) -> Result<()> {
173175

174176
Ok(())
175177
}
178+
179+
async fn crate_id(name: &str, conn: &mut AsyncPgConnection) -> QueryResult<Option<i32>> {
180+
crates::table
181+
.filter(crates::name.eq(name))
182+
.select(crates::id)
183+
.first::<i32>(conn)
184+
.await
185+
.optional()
186+
}

src/bin/crates-admin/yank_version.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ async fn yank(opts: Opts, conn: &mut AsyncPgConnection) -> anyhow::Result<()> {
6767
.execute(conn)
6868
.await?;
6969

70-
let git_index_job = SyncToGitIndex::new(&krate.name);
71-
let sparse_index_job = SyncToSparseIndex::new(&krate.name);
70+
let git_index_job = SyncToGitIndex::new(krate.id, &krate.name);
71+
let sparse_index_job = SyncToSparseIndex::new(krate.id, &krate.name);
7272
let update_default_version_job = UpdateDefaultVersion::new(krate.id);
7373

7474
tokio::try_join!(

src/controllers/krate/delete.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ pub async fn delete_crate(
132132
.execute(conn)
133133
.await?;
134134

135-
let git_index_job = jobs::SyncToGitIndex::new(&krate.name);
136-
let sparse_index_job = jobs::SyncToSparseIndex::new(&krate.name);
135+
let git_index_job = jobs::SyncToGitIndex::new(krate.id, &krate.name);
136+
let sparse_index_job = jobs::SyncToSparseIndex::new(krate.id, &krate.name);
137137
let delete_from_storage_job = jobs::DeleteCrateFromStorage::new(path.name);
138138

139139
tokio::try_join!(

src/controllers/krate/publish.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -611,10 +611,10 @@ pub async fn publish(app: AppState, req: Parts, body: Body) -> AppResult<Json<Go
611611
.await
612612
.map_err(|e| internal(format!("failed to upload crate: {e}")))?;
613613

614-
let git_index_job = jobs::SyncToGitIndex::new(&krate.name);
615-
let sparse_index_job = jobs::SyncToSparseIndex::new(&krate.name);
614+
let git_index_job = jobs::SyncToGitIndex::new(krate.id, &krate.name);
615+
let sparse_index_job = jobs::SyncToSparseIndex::new(krate.id, &krate.name);
616616
let publish_notifications_job = SendPublishNotificationsJob::new(version.id);
617-
let crate_feed_job = jobs::rss::SyncCrateFeed::new(krate.name.clone());
617+
let crate_feed_job = jobs::rss::SyncCrateFeed::new(krate.id, krate.name.clone());
618618
let updates_feed_job = jobs::rss::SyncUpdatesFeed;
619619

620620
tokio::try_join!(

src/controllers/version/update.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@ pub async fn perform_version_yank_update(
178178
.insert(conn)
179179
.await?;
180180

181-
let git_index_job = SyncToGitIndex::new(&krate.name);
182-
let sparse_index_job = SyncToSparseIndex::new(&krate.name);
181+
let git_index_job = SyncToGitIndex::new(krate.id, &krate.name);
182+
let sparse_index_job = SyncToSparseIndex::new(krate.id, &krate.name);
183183
let update_default_version_job = UpdateDefaultVersion::new(krate.id);
184184

185185
tokio::try_join!(

src/worker/jobs/index/sync.rs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,22 @@ use tracing::{debug, info, instrument};
1313

1414
#[derive(Serialize, Deserialize)]
1515
pub struct SyncToGitIndex {
16+
crate_id: Option<i32>,
1617
krate: String,
1718
}
1819

1920
impl SyncToGitIndex {
20-
pub fn new(krate: impl Into<String>) -> Self {
21+
pub fn new(crate_id: i32, krate: impl Into<String>) -> Self {
2122
let krate = krate.into();
22-
Self { krate }
23+
Self {
24+
crate_id: Some(crate_id),
25+
krate,
26+
}
27+
}
28+
29+
pub fn new_maybe_deleted(crate_id: Option<i32>, krate: impl Into<String>) -> Self {
30+
let krate = krate.into();
31+
Self { crate_id, krate }
2332
}
2433
}
2534

@@ -81,13 +90,22 @@ impl BackgroundJob for SyncToGitIndex {
8190

8291
#[derive(Serialize, Deserialize)]
8392
pub struct SyncToSparseIndex {
93+
crate_id: Option<i32>,
8494
krate: String,
8595
}
8696

8797
impl SyncToSparseIndex {
88-
pub fn new(krate: impl Into<String>) -> Self {
98+
pub fn new(crate_id: i32, krate: impl Into<String>) -> Self {
99+
let krate = krate.into();
100+
Self {
101+
crate_id: Some(crate_id),
102+
krate,
103+
}
104+
}
105+
106+
pub fn new_maybe_deleted(crate_id: Option<i32>, krate: impl Into<String>) -> Self {
89107
let krate = krate.into();
90-
Self { krate }
108+
Self { crate_id, krate }
91109
}
92110
}
93111

src/worker/jobs/rss/sync_crate_feed.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,16 @@ const NUM_ITEMS: i64 = 10;
2222

2323
#[derive(Serialize, Deserialize)]
2424
pub struct SyncCrateFeed {
25+
crate_id: Option<i32>,
2526
name: String,
2627
}
2728

2829
impl SyncCrateFeed {
29-
pub fn new(name: String) -> Self {
30-
Self { name }
30+
pub fn new(crate_id: i32, name: String) -> Self {
31+
Self {
32+
crate_id: Some(crate_id),
33+
name,
34+
}
3135
}
3236
}
3337

0 commit comments

Comments
 (0)