mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-04 01:18:34 +00:00
reuse thumbnail data
This commit is contained in:
1 parent
fa7a0c3200
commit
091579e9bb
2 files changed
+12
-27
No files matched your search
+4
-10
@@ -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);
|
||||
|
||||
+8
-17
@@ -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"))?;
|
||||
|
||||
|
||||
Reference in new issue
Block a user