reuse thumbnail data

This commit is contained in:
Brandon Thomas committed 2026-04-12 02:00:21 -04:00
1 parent fa7a0c3200
commit 091579e9bb
2 files changed
+12 -27

No files matched your search

@@ -42,10 +42,6 @@ pub async fn handle_successful_fal_webhook(
let mut maybe_media_token = None;
let mut maybe_batch_token = None;
// The raw payload is still available for processors that need arbitrary JSON
// access beyond the typed extracted_contents.
let payload = &success_data.payload;
if let Some(ref extracted) = success_data.extracted_contents {
if let Some(ref image_data) = extracted.image {
info!("Handling image payload for request_id {} / job {:?}", request_id, job.job_token);
@@ -75,12 +71,10 @@ pub async fn handle_successful_fal_webhook(
}
if let Some(ref model_glb_data) = extracted.model_glb {
if let Some(payload_obj) = payload.as_object() {
info!("Handling model_glb payload for request_id {} / job {:?}", request_id, job.job_token);
let token = process_model_glb_payload(model_glb_data, payload_obj, &job, server_state).await?;
if maybe_media_token.is_none() {
maybe_media_token = Some(token);
}
info!("Handling model_glb payload for request_id {} / job {:?}", request_id, job.job_token);
let token = process_model_glb_payload(model_glb_data, extracted.thumbnail.as_ref(), &job, server_state).await?;
if maybe_media_token.is_none() {
maybe_media_token = Some(token);
}
} else if let Some(ref model_mesh_data) = extracted.model_mesh {
info!("Handling model_mesh payload for request_id {} / job {:?}", request_id, job.job_token);
@@ -7,13 +7,12 @@ use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCat
use enums::by_table::media_files::media_file_origin_category::MediaFileOriginCategory;
use enums::by_table::media_files::media_file_type::MediaFileType;
use errors::AnyhowResult;
use fal_client::webhook_api::hydrated::hydrated_webhook_contents::ModelGlbData;
use fal_client::webhook_api::hydrated::hydrated_webhook_contents::{ModelGlbData, ThumbnailData};
use hashing::sha256::sha256_hash_bytes::sha256_hash_bytes;
use log::{info, warn};
use mimetypes::mimetype_info::mimetype_info::MimetypeInfo;
use mysql_queries::queries::generic_inference::fal::get_inference_job_by_fal_id::FalJobDetails;
use mysql_queries::queries::media_files::create::insert_builder::media_file_insert_builder::MediaFileInsertBuilder;
use serde_json::{Map, Value};
use mysql_queries::queries::media_files::edit::set_media_file_cover_image::{set_media_file_cover_image, UpdateArgs};
use tokens::tokens::media_files::MediaFileToken;
@@ -58,7 +57,7 @@ const PREFIX : Option<&str> = Some("artcraft_");
pub async fn process_model_glb_payload(
model_glb_data: &ModelGlbData,
payload: &Map<String, Value>,
maybe_thumbnail_data: Option<&ThumbnailData>,
job: &FalJobDetails,
server_state: &ServerState,
) -> AnyhowResult<MediaFileToken> {
@@ -117,7 +116,7 @@ pub async fn process_model_glb_payload(
info!("Glb media file uploaded with token: {}", media_token);
let result = try_to_attach_thumbnail(
payload,
maybe_thumbnail_data,
job,
server_state,
&media_token,
@@ -132,25 +131,17 @@ pub async fn process_model_glb_payload(
}
async fn try_to_attach_thumbnail(
payload: &Map<String, Value>,
maybe_thumbnail_data: Option<&ThumbnailData>,
job: &FalJobDetails,
server_state: &ServerState,
glb_media_token: &MediaFileToken,
) -> AnyhowResult<()> {
let thumbnail_data = maybe_thumbnail_data
.ok_or_else(|| anyhow!("no thumbnail data in extracted contents"))?;
let thumbnail_value = payload.get("thumbnail")
.ok_or_else(|| anyhow!("no `thumbnail` key in payload"))?;
info!("Fal Thumbnail Data: {:?}", thumbnail_data);
info!("Fal Thumbnail Payload: {:?}", thumbnail_value);
#[derive(Deserialize)]
struct ThumbnailPayload {
url: Option<String>,
}
let thumbnail: ThumbnailPayload = serde_json::from_value(thumbnail_value.clone())?;
let thumbnail_url = thumbnail.url
let thumbnail_url = thumbnail_data.url
.as_deref()
.ok_or_else(|| anyhow!("no `url` in thumbnail payload"))?;