|
3 | 3 | use crate::app::AppState;
|
4 | 4 | use crate::auth::{AuthCheck, AuthHeader, Authentication};
|
5 | 5 | use crate::worker::jobs::{
|
6 |
| - self, CheckTyposquat, SendPublishNotificationsJob, UpdateDefaultVersion, |
| 6 | + self, CheckTyposquat, GenerateOgImage, SendPublishNotificationsJob, UpdateDefaultVersion, |
7 | 7 | };
|
8 | 8 | use axum::Json;
|
9 | 9 | use axum::body::{Body, Bytes};
|
@@ -549,14 +549,14 @@ pub async fn publish(app: AppState, req: Parts, body: Body) -> AppResult<Json<Go
|
549 | 549 | // Compared to only using a background job, this prevents us from getting into a
|
550 | 550 | // situation where a crate exists in the `crates` table but doesn't have a default
|
551 | 551 | // version in the `default_versions` table.
|
552 |
| - if let Some((existing_default_version, _)) = existing_default_version { |
| 552 | + if let Some((existing_default_version, _)) = &existing_default_version { |
553 | 553 | let published_default_version = DefaultVersion {
|
554 | 554 | id: version.id,
|
555 | 555 | num: semver,
|
556 | 556 | yanked: false,
|
557 | 557 | };
|
558 | 558 |
|
559 |
| - if existing_default_version < published_default_version { |
| 559 | + if existing_default_version < &published_default_version { |
560 | 560 | diesel::update(default_versions::table)
|
561 | 561 | .filter(default_versions::crate_id.eq(krate.id))
|
562 | 562 | .set(default_versions::version_id.eq(version.id))
|
@@ -631,6 +631,14 @@ pub async fn publish(app: AppState, req: Parts, body: Body) -> AppResult<Json<Go
|
631 | 631 | }),
|
632 | 632 | )?;
|
633 | 633 |
|
| 634 | + // Enqueue OG image generation job if not handled by UpdateDefaultVersion |
| 635 | + if existing_default_version.is_none() { |
| 636 | + let og_image_job = GenerateOgImage::new(krate.name.clone()); |
| 637 | + if let Err(error) = og_image_job.enqueue(conn).await { |
| 638 | + error!("Failed to enqueue `GenerateOgImage` job: {error}"); |
| 639 | + } |
| 640 | + }; |
| 641 | + |
634 | 642 | // Experiment: check new crates for potential typosquatting.
|
635 | 643 | if existing_crate.is_none() {
|
636 | 644 | let crates_feed_job = jobs::rss::SyncCratesFeed;
|
|
0 commit comments