diff --git a/crates/cli/devenv/dev-database-seed/src/seeding/seed_media_files.rs b/crates/cli/devenv/dev-database-seed/src/seeding/seed_media_files.rs index 16303901cf..a44b98492a 100644 --- a/crates/cli/devenv/dev-database-seed/src/seeding/seed_media_files.rs +++ b/crates/cli/devenv/dev-database-seed/src/seeding/seed_media_files.rs @@ -40,13 +40,13 @@ pub async fn seed_media_files(mysql_pool: &Pool, maybe_bucket_clients: Op (HANASHI_USER_TOKEN, "m_8n5epqfvs2vh60khap0s3ezem4epkc", MediaFileType::Audio, "media/audio/voice-samples/trump.wav"), (HANASHI_USER_TOKEN, "m_g6dpwcpq51e6kvmpbbkdvgxfan9k1k", MediaFileType::Audio, "media/audio/voice-samples/trump_tts.wav"), // Images - (HANASHI_USER_TOKEN, "m_cn5t6ywm9k1ge9qzzxst5krc5tm08m", MediaFileType::Image, "media/image/face-animator-inputs/bill.jpg"), - (HANASHI_USER_TOKEN, "m_nf9xebrr8hd1bxkfy7src5k8nv2dzy", MediaFileType::Image, "media/image/face-animator-inputs/elon.jpg"), - (HANASHI_USER_TOKEN, "m_t17zh2r3ahs485b8m7c9q502cs6jqh", MediaFileType::Image, "media/image/face-animator-inputs/ernest.jpg"), - (HANASHI_USER_TOKEN, "m_vms09sby8tyw742y2s66a4w8f0w278", MediaFileType::Image, "media/image/face-animator-inputs/link.jpg"), - (HANASHI_USER_TOKEN, "m_s1z9krfzrscy92jgq3sxhpx1n4vxvc", MediaFileType::Image, "media/image/face-animator-inputs/ripley.jpg"), - (HANASHI_USER_TOKEN, "m_we7mnzbd76g4yn19dm6m53er0pjvew", MediaFileType::Image, "media/image/face-animator-inputs/san.png"), - (HANASHI_USER_TOKEN, "m_wahwz92nxxfg0x42dw9fdrhwq30yk0", MediaFileType::Image, "media/image/face-animator-inputs/zelda.jpg"), + (HANASHI_USER_TOKEN, "m_cn5t6ywm9k1ge9qzzxst5krc5tm08m", MediaFileType::Jpg, "media/image/face-animator-inputs/bill.jpg"), + (HANASHI_USER_TOKEN, "m_nf9xebrr8hd1bxkfy7src5k8nv2dzy", MediaFileType::Jpg, "media/image/face-animator-inputs/elon.jpg"), + (HANASHI_USER_TOKEN, "m_t17zh2r3ahs485b8m7c9q502cs6jqh", MediaFileType::Jpg, "media/image/face-animator-inputs/ernest.jpg"), + (HANASHI_USER_TOKEN, "m_vms09sby8tyw742y2s66a4w8f0w278", MediaFileType::Jpg, "media/image/face-animator-inputs/link.jpg"), + (HANASHI_USER_TOKEN, "m_s1z9krfzrscy92jgq3sxhpx1n4vxvc", MediaFileType::Jpg, "media/image/face-animator-inputs/ripley.jpg"), + (HANASHI_USER_TOKEN, "m_we7mnzbd76g4yn19dm6m53er0pjvew", MediaFileType::Png, "media/image/face-animator-inputs/san.png"), + (HANASHI_USER_TOKEN, "m_wahwz92nxxfg0x42dw9fdrhwq30yk0", MediaFileType::Jpg, "media/image/face-animator-inputs/zelda.jpg"), // Video (HANASHI_USER_TOKEN, "m_gedarcfdkxx3zv8zz2wmwsnc1r8jbp", MediaFileType::Video, "media/video/storyteller-studio-renders/girl-rotating-room.mp4"), (HANASHI_USER_TOKEN, "m_3s74yyd4jwrjdp17yx1694n29jv5gr", MediaFileType::Video, "media/video/storyteller-studio-renders/hanashi-run.mp4"), diff --git a/crates/cli/devenv/dev-upload-media-file/src/main.rs b/crates/cli/devenv/dev-upload-media-file/src/main.rs index 4a1394891a..41bcd788c7 100644 --- a/crates/cli/devenv/dev-upload-media-file/src/main.rs +++ b/crates/cli/devenv/dev-upload-media-file/src/main.rs @@ -86,13 +86,13 @@ pub async fn main() -> AnyhowResult<()> { maybe_public_bucket_extension = Some(".mp4"); } Some("image/jpeg") => { - media_file_type = MediaFileType::Image; + media_file_type = MediaFileType::Jpg; maybe_mime_type = mimetype; maybe_public_bucket_prefix = Some("dev_upload_"); maybe_public_bucket_extension = Some(".jpg"); } Some("image/png") => { - media_file_type = MediaFileType::Image; + media_file_type = MediaFileType::Png; maybe_mime_type = mimetype; maybe_public_bucket_prefix = Some("dev_upload_"); maybe_public_bucket_extension = Some(".png"); diff --git a/crates/service/job/deprecated/inference_job/src/job/job_types/image_generation/sd/process_job_inference.rs b/crates/service/job/deprecated/inference_job/src/job/job_types/image_generation/sd/process_job_inference.rs index 5fb2b45ff3..55f8d266fd 100644 --- a/crates/service/job/deprecated/inference_job/src/job/job_types/image_generation/sd/process_job_inference.rs +++ b/crates/service/job/deprecated/inference_job/src/job/job_types/image_generation/sd/process_job_inference.rs @@ -251,12 +251,20 @@ pub async fn process_job_inference( } }; + let media_type = match metadata.mimetype.as_ref() { + "image/png" => MediaFileType::Png, + "image/jpeg" => MediaFileType::Jpg, + "image/gif" => MediaFileType::Gif, + "image/webp" => MediaFileType::Image, // Fallback + _ => MediaFileType::Image, // Fallback + }; + // extra_file_modification_info: todo!(), // JSON ENCODED STRUCT let (media_file_token, _id) = insert_media_file_generic_from_job(InsertFromJobArgs { pool: mysql_pool, job, media_class: MediaFileClass::Image, - media_type: MediaFileType::Image, // TODO(bt,2024-04-30): This should be a specific type of image + media_type, origin_category: MediaFileOriginCategory::Upload, origin_product_category: MediaFileOriginProductCategory::ImageGeneration, maybe_origin_model_type: Some(MediaFileOriginModelType::StableDiffusion15), diff --git a/crates/service/job/seedance2_pro_job/src/jobs/video_polling_job/process_job/process_successful_job.rs b/crates/service/job/seedance2_pro_job/src/jobs/video_polling_job/process_job/process_successful_job.rs index 33affd8b82..cde6635835 100644 --- a/crates/service/job/seedance2_pro_job/src/jobs/video_polling_job/process_job/process_successful_job.rs +++ b/crates/service/job/seedance2_pro_job/src/jobs/video_polling_job/process_job/process_successful_job.rs @@ -7,6 +7,7 @@ use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_origin_category::MediaFileOriginCategory; use enums::by_table::media_files::media_file_origin_product_category::MediaFileOriginProductCategory; use enums::by_table::media_files::media_file_type::MediaFileType; +use enums::common::generation_provider::GenerationProvider; use errors::AnyhowResult; use hashing::sha256::sha256_hash_bytes::sha256_hash_bytes; use mysql_queries::queries::generic_inference::api_providers::seedance2pro::list_pending_seedance2pro_video_jobs::PendingSeedance2ProJob; @@ -120,20 +121,21 @@ pub async fn process_successful_job( // Insert media file record. let media_file_result = MediaFileInsertBuilder::new() - .maybe_creator_user(job.maybe_creator_user_token.as_ref()) - .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .checksum_sha2(&checksum) .creator_ip_address(&job.creator_ip_address) .creator_set_visibility(job.creator_set_visibility) + .file_size_bytes(video_bytes.len() as u64) + .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .maybe_creator_user(job.maybe_creator_user_token.as_ref()) + .maybe_frame_height(maybe_frame_height) + .maybe_frame_width(maybe_frame_width) + .maybe_generation_provider(Some(GenerationProvider::Artcraft)) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) .media_file_class(MediaFileClass::Video) - .media_file_type(MediaFileType::Mp4) .media_file_origin_category(MediaFileOriginCategory::Inference) .media_file_origin_product_category(MediaFileOriginProductCategory::VideoGeneration) + .media_file_type(MediaFileType::Mp4) .mime_type("video/mp4") - .file_size_bytes(video_bytes.len() as u64) - .maybe_frame_width(maybe_frame_width) - .maybe_frame_height(maybe_frame_height) - .checksum_sha2(&checksum) - .maybe_prompt_token(job.maybe_prompt_token.as_ref()) .public_bucket_directory_hash(&bucket_path) .insert_pool(&deps.mysql_pool) .await; diff --git a/crates/service/job/worldlabs_job/src/process_job/process_successful_job.rs b/crates/service/job/worldlabs_job/src/process_job/process_successful_job.rs index 20900a0bd7..69774bc8d4 100644 --- a/crates/service/job/worldlabs_job/src/process_job/process_successful_job.rs +++ b/crates/service/job/worldlabs_job/src/process_job/process_successful_job.rs @@ -7,6 +7,7 @@ use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_origin_category::MediaFileOriginCategory; use enums::by_table::media_files::media_file_origin_product_category::MediaFileOriginProductCategory; use enums::by_table::media_files::media_file_type::MediaFileType; +use enums::common::generation_provider::GenerationProvider; use errors::AnyhowResult; use hashing::sha256::sha256_hash_bytes::sha256_hash_bytes; use mysql_queries::queries::generic_inference::api_providers::worldlabs::list_pending_worldlabs_jobs::PendingWorldlabsJob; @@ -111,19 +112,20 @@ pub async fn process_successful_job( // Insert media file record. let media_file_token = MediaFileInsertBuilder::new() - .maybe_creator_user(job.maybe_creator_user_token.as_ref()) - .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .checksum_sha2(&checksum) .creator_ip_address(&job.creator_ip_address) .creator_set_visibility(job.creator_set_visibility) + .file_size_bytes(splat_bytes.len() as u64) + .maybe_cover_image_media_file_token(maybe_cover_token.as_ref()) + .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .maybe_creator_user(job.maybe_creator_user_token.as_ref()) + .maybe_generation_provider(Some(GenerationProvider::Artcraft)) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) .media_file_class(MediaFileClass::Dimensional) - .media_file_type(MediaFileType::Spz) .media_file_origin_category(MediaFileOriginCategory::Inference) .media_file_origin_product_category(MediaFileOriginProductCategory::WorldGeneration) + .media_file_type(MediaFileType::Spz) .mime_type("application/gzip") - .file_size_bytes(splat_bytes.len() as u64) - .checksum_sha2(&checksum) - .maybe_prompt_token(job.maybe_prompt_token.as_ref()) - .maybe_cover_image_media_file_token(maybe_cover_token.as_ref()) .public_bucket_directory_hash(&bucket_path) .insert_pool(&deps.mysql_pool) .await diff --git a/crates/service/web/storyteller_web/src/http_server/deprecated_endpoints/engine/process_upload_media_file.rs b/crates/service/web/storyteller_web/src/http_server/deprecated_endpoints/engine/process_upload_media_file.rs index 3ed38fa86c..fd9b9b02a6 100644 --- a/crates/service/web/storyteller_web/src/http_server/deprecated_endpoints/engine/process_upload_media_file.rs +++ b/crates/service/web/storyteller_web/src/http_server/deprecated_endpoints/engine/process_upload_media_file.rs @@ -185,11 +185,11 @@ pub async fn process_upload_media_file( "audio/opus" /* .opus */ => Some(MediaFileType::Audio), "audio/x-flac" /* .flac */ => Some(MediaFileType::Audio), "audio/x-wav" /* .wav */ => Some(MediaFileType::Audio), - // Image - "image/gif" /* .gif */ => Some(MediaFileType::Image), - "image/jpeg" /* .jpg */ => Some(MediaFileType::Image), - "image/png" /* .png */ => Some(MediaFileType::Image), - "image/webp" /* .webp */ => Some(MediaFileType::Image), + // Image — `webp` has no dedicated variant yet + "image/gif" /* .gif */ => Some(MediaFileType::Gif), + "image/jpeg" /* .jpg */ => Some(MediaFileType::Jpg), + "image/png" /* .png */ => Some(MediaFileType::Png), + "image/webp" /* .webp */ => Some(MediaFileType::Image), // TODO: Replace. // Video "video/mp4" /* .mp4 */ => Some(MediaFileType::Video), "video/quicktime" /* .mov */ => Some(MediaFileType::Video), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/image_studio/upload/upload_snapshot_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/image_studio/upload/upload_snapshot_media_file_handler.rs index 50457ada32..aba252de5e 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/image_studio/upload/upload_snapshot_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/image_studio/upload/upload_snapshot_media_file_handler.rs @@ -236,9 +236,17 @@ pub async fn upload_snapshot_media_file_handler( MediaFileUploadError::ServerError })?; + let media_file_type = match mimetype.as_str() { + "image/jpeg" => MediaFileType::Jpg, + "image/png" => MediaFileType::Png, + "image/gif" => MediaFileType::Gif, + "image/webp" => MediaFileType::Image, // Fallback + _ => MediaFileType::Image, // Fallback + }; + let (token, record_id) = insert_media_file_from_file_upload(InsertMediaFileFromUploadArgs { maybe_media_class: Some(MediaFileClass::Image), - media_file_type: MediaFileType::Image, + media_file_type, maybe_creator_user_token: maybe_user_token.as_ref(), maybe_creator_anonymous_visitor_token: maybe_avt_token.as_ref(), creator_ip_address: &ip_address, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_generic/process_upload_media_file.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_generic/process_upload_media_file.rs index c2fd0e72f2..c77d2b40ed 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_generic/process_upload_media_file.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_generic/process_upload_media_file.rs @@ -212,10 +212,10 @@ pub async fn process_upload_media_file( "audio/opus" /* .opus */ => Some(MediaFileType::Audio), "audio/x-flac" /* .flac */ => Some(MediaFileType::Audio), "audio/x-wav" /* .wav */ => Some(MediaFileType::Audio), - // Image - "image/gif" /* .gif */ => Some(MediaFileType::Image), - "image/jpeg" /* .jpg */ => Some(MediaFileType::Image), - "image/png" /* .png */ => Some(MediaFileType::Image), + // Image — `webp` has no dedicated variant yet + "image/gif" /* .gif */ => Some(MediaFileType::Gif), + "image/jpeg" /* .jpg */ => Some(MediaFileType::Jpg), + "image/png" /* .png */ => Some(MediaFileType::Png), "image/webp" /* .webp */ => Some(MediaFileType::Image), // Video "video/mp4" /* .mp4 */ => Some(MediaFileType::Video), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_image_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_image_media_file_handler.rs index e42dd225f4..b2238f6044 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_image_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_image_media_file_handler.rs @@ -299,9 +299,17 @@ pub async fn upload_image_media_file_handler( UploadType::Filesystem }; + let media_file_type = match mimetype.as_str() { + "image/jpeg" => MediaFileType::Jpg, + "image/png" => MediaFileType::Png, + "image/gif" => MediaFileType::Gif, + "image/webp" => MediaFileType::Image, // Fallback + _ => MediaFileType::Image, // fallback + }; + let (token, record_id) = insert_media_file_from_file_upload(InsertMediaFileFromUploadArgs { maybe_media_class: Some(MediaFileClass::Image), - media_file_type: MediaFileType::Image, + media_file_type, maybe_creator_user_token: maybe_user_token.as_ref(), maybe_creator_anonymous_visitor_token: maybe_avt_token.as_ref(), creator_ip_address: &ip_address, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/beeble/beeble_webhook_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/beeble/beeble_webhook_handler.rs index 5e42f4d985..648bf92266 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/beeble/beeble_webhook_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/beeble/beeble_webhook_handler.rs @@ -19,6 +19,7 @@ use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_origin_category::MediaFileOriginCategory; use enums::by_table::media_files::media_file_origin_product_category::MediaFileOriginProductCategory; use enums::by_table::media_files::media_file_type::MediaFileType; +use enums::common::generation_provider::GenerationProvider; use ffmpeg_utils::ffprobe::ffprobe_get_info::ffprobe_get_info; use filesys::path_to_string::path_to_string; use hashing::sha256::sha256_hash_bytes::sha256_hash_bytes; @@ -360,21 +361,22 @@ async fn download_and_upload_video( })?; let media_token = MediaFileInsertBuilder::new() - .maybe_creator_user(job.maybe_creator_user_token.as_ref()) - .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .checksum_sha2(&file_hash) .creator_ip_address(&job.creator_ip_address) - .public_bucket_directory_hash(&public_upload_path) + .file_size_bytes(file_size_bytes as u64) + .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .maybe_creator_user(job.maybe_creator_user_token.as_ref()) + .maybe_duration_millis(maybe_duration_millis) + .maybe_frame_height(maybe_frame_height) + .maybe_frame_width(maybe_frame_width) + .maybe_generation_provider(Some(GenerationProvider::Artcraft)) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) .media_file_class(MediaFileClass::Video) - .media_file_type(media_file_type) .media_file_origin_category(MediaFileOriginCategory::Inference) .media_file_origin_product_category(MediaFileOriginProductCategory::VideoEdit) + .media_file_type(media_file_type) .mime_type(mime_type) - .file_size_bytes(file_size_bytes as u64) - .maybe_frame_width(maybe_frame_width) - .maybe_frame_height(maybe_frame_height) - .maybe_duration_millis(maybe_duration_millis) - .checksum_sha2(&file_hash) - .maybe_prompt_token(job.maybe_prompt_token.as_ref()) + .public_bucket_directory_hash(&public_upload_path) .insert_pool(&server_state.mysql_pool) .await .map_err(|e| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_image_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_image_payload.rs index 1578aecd8d..caabca0080 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_image_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_image_payload.rs @@ -11,6 +11,7 @@ use hashing::sha256::sha256_hash_bytes::sha256_hash_bytes; use images::encoding::webp_bytes_to_png_bytes::webp_bytes_to_png_bytes; use images::image_info::image_info::ImageInfo; use log::{info, warn}; +use enums::common::generation_provider::GenerationProvider; use mimetypes::mimetype_info::file_extension::FileExtension; use mysql_queries::queries::generic_inference::api_providers::fal::get_inference_job_by_fal_id::FalJobDetails; use mysql_queries::queries::media_files::create::insert_builder::media_file_insert_builder::MediaFileInsertBuilder; @@ -152,20 +153,20 @@ async fn upload_single_image_bytes( })?; let media_token = MediaFileInsertBuilder::new() - .maybe_creator_user(job.maybe_creator_user_token.as_ref()) - .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) - .creator_ip_address(&job.creator_ip_address) - .public_bucket_directory_hash(&public_upload_path) - .media_file_class(MediaFileClass::Image) - .media_file_type(media_file_type) - .media_file_origin_category(MediaFileOriginCategory::Inference) - .maybe_prompt_token(job.maybe_prompt_token.as_ref()) - //.media_file_origin_product_category(MediaFileOriginProductCategory::Unknown) - .mime_type(mime_type) - .file_size_bytes(file_size_bytes as u64) - .frame_width(image_info.width()) - .frame_height(image_info.height()) .checksum_sha2(&file_hash) + .creator_ip_address(&job.creator_ip_address) + .file_size_bytes(file_size_bytes as u64) + .frame_height(image_info.height()) + .frame_width(image_info.width()) + .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .maybe_creator_user(job.maybe_creator_user_token.as_ref()) + .maybe_generation_provider(Some(GenerationProvider::Artcraft)) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) + .media_file_class(MediaFileClass::Image) + .media_file_origin_category(MediaFileOriginCategory::Inference) + .media_file_type(media_file_type) + .mime_type(mime_type) + .public_bucket_directory_hash(&public_upload_path) .insert_pool(&server_state.mysql_pool) .await .map_err(|err| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_images_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_images_payload.rs index 5b388b6249..2fc19edc92 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_images_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_images_payload.rs @@ -11,6 +11,7 @@ use hashing::sha256::sha256_hash_bytes::sha256_hash_bytes; use images::encoding::webp_bytes_to_png_bytes::webp_bytes_to_png_bytes; use images::image_info::image_info::ImageInfo; use log::{error, info, warn}; +use enums::common::generation_provider::GenerationProvider; use mimetypes::mimetype_info::file_extension::FileExtension; use mysql_queries::queries::generic_inference::api_providers::fal::get_inference_job_by_fal_id::FalJobDetails; use mysql_queries::queries::media_files::create::insert_builder::media_file_insert_builder::MediaFileInsertBuilder; @@ -237,20 +238,20 @@ async fn upload_image_bytes( })?; let mut query_builder = MediaFileInsertBuilder::new() - .maybe_creator_user(job.maybe_creator_user_token.as_ref()) - .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .checksum_sha2(&file_hash) .creator_ip_address(&job.creator_ip_address) - .public_bucket_directory_hash(&public_upload_path) - .media_file_class(MediaFileClass::Image) - .media_file_type(media_file_type) - .media_file_origin_category(MediaFileOriginCategory::Inference) - //.media_file_origin_product_category(MediaFileOriginProductCategory::Unknown) - .mime_type(mime_type) .file_size_bytes(file_size_bytes as u64) - .frame_width(image_info.width()) .frame_height(image_info.height()) + .frame_width(image_info.width()) + .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .maybe_creator_user(job.maybe_creator_user_token.as_ref()) + .maybe_generation_provider(Some(GenerationProvider::Artcraft)) .maybe_prompt_token(job.maybe_prompt_token.as_ref()) - .checksum_sha2(&file_hash); + .media_file_class(MediaFileClass::Image) + .media_file_origin_category(MediaFileOriginCategory::Inference) + .media_file_type(media_file_type) + .mime_type(mime_type) + .public_bucket_directory_hash(&public_upload_path); if let Some(batch_token) = maybe_batch_token { query_builder = query_builder.maybe_batch_generation_token(Some(batch_token)); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_glb_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_glb_payload.rs index a9fc94ed7e..a47e844e34 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_glb_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_glb_payload.rs @@ -10,6 +10,7 @@ use enums::by_table::media_files::media_file_type::MediaFileType; use fal_client::webhook_payload::hydrated::hydrated_webhook_contents::{ModelGlbData, ThumbnailData}; use hashing::sha256::sha256_hash_bytes::sha256_hash_bytes; use log::{info, warn}; +use enums::common::generation_provider::GenerationProvider; use mysql_queries::queries::generic_inference::api_providers::fal::get_inference_job_by_fal_id::FalJobDetails; use mysql_queries::queries::media_files::create::insert_builder::media_file_insert_builder::MediaFileInsertBuilder; use mysql_queries::queries::media_files::edit::set_media_file_cover_image::{set_media_file_cover_image, UpdateArgs}; @@ -269,20 +270,19 @@ async fn try_to_attach_thumbnail( })?; let thumbnail_media_token = MediaFileInsertBuilder::new() - .maybe_creator_user(job.maybe_creator_user_token.as_ref()) - .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) - .creator_ip_address(&job.creator_ip_address) - .public_bucket_directory_hash(&public_upload_path) - .media_file_class(MediaFileClass::Image) - .media_file_type(media_file_type) - .media_file_origin_category(MediaFileOriginCategory::Processed) - //.maybe_engine_category(Some(MediaFileEngineCategory::Object)) - //.media_file_origin_product_category(MediaFileOriginProductCategory::Unknown) - .mime_type(mime_type) - .file_size_bytes(file_size_bytes as u64) - .maybe_prompt_token(job.maybe_prompt_token.as_ref()) - .is_intermediate_system_file(true) .checksum_sha2(&file_hash) + .creator_ip_address(&job.creator_ip_address) + .file_size_bytes(file_size_bytes as u64) + .is_intermediate_system_file(true) + .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .maybe_creator_user(job.maybe_creator_user_token.as_ref()) + .maybe_generation_provider(Some(GenerationProvider::Artcraft)) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) + .media_file_class(MediaFileClass::Dimensional) + .media_file_origin_category(MediaFileOriginCategory::Inference) + .media_file_type(media_file_type) + .mime_type(mime_type) + .public_bucket_directory_hash(&public_upload_path) .insert_pool(&server_state.mysql_pool) .await .map_err(|e| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_mesh_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_mesh_payload.rs index 8baf864ecb..1827ceb160 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_mesh_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_mesh_payload.rs @@ -10,6 +10,7 @@ use enums::by_table::media_files::media_file_type::MediaFileType; use fal_client::webhook_payload::hydrated::hydrated_webhook_contents::ModelMeshData; use hashing::sha256::sha256_hash_bytes::sha256_hash_bytes; use log::{info, warn}; +use enums::common::generation_provider::GenerationProvider; use mysql_queries::queries::generic_inference::api_providers::fal::get_inference_job_by_fal_id::FalJobDetails; use mysql_queries::queries::media_files::create::insert_builder::media_file_insert_builder::MediaFileInsertBuilder; use tokens::tokens::media_files::MediaFileToken; @@ -98,19 +99,19 @@ pub async fn process_model_mesh_payload( })?; let media_token = MediaFileInsertBuilder::new() - .maybe_creator_user(job.maybe_creator_user_token.as_ref()) - .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) - .creator_ip_address(&job.creator_ip_address) - .public_bucket_directory_hash(&public_upload_path) - .media_file_class(MediaFileClass::Dimensional) - .media_file_type(media_file_type) - .media_file_origin_category(MediaFileOriginCategory::Inference) - .maybe_engine_category(Some(MediaFileEngineCategory::Object)) - //.media_file_origin_product_category(MediaFileOriginProductCategory::Unknown) - .mime_type(mime_type) - .file_size_bytes(file_size_bytes as u64) - .maybe_prompt_token(job.maybe_prompt_token.as_ref()) .checksum_sha2(&file_hash) + .creator_ip_address(&job.creator_ip_address) + .file_size_bytes(file_size_bytes as u64) + .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .maybe_creator_user(job.maybe_creator_user_token.as_ref()) + .maybe_engine_category(Some(MediaFileEngineCategory::Object)) + .maybe_generation_provider(Some(GenerationProvider::Artcraft)) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) + .media_file_class(MediaFileClass::Dimensional) + .media_file_origin_category(MediaFileOriginCategory::Inference) + .media_file_type(media_file_type) + .mime_type(mime_type) + .public_bucket_directory_hash(&public_upload_path) .insert_pool(&server_state.mysql_pool) .await .map_err(|err| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_video_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_video_payload.rs index 8bae724a86..ad17b414c2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_video_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_video_payload.rs @@ -14,6 +14,7 @@ use mysql_queries::queries::generic_inference::api_providers::fal::get_inference use mysql_queries::queries::media_files::create::insert_builder::media_file_insert_builder::MediaFileInsertBuilder; use std::io::Write; use tempfile::NamedTempFile; +use enums::common::generation_provider::GenerationProvider; use thumbnail_generator::task_client::thumbnail_task::{ThumbnailTaskBuilder, ThumbnailTaskInputMimeType}; use tokens::tokens::media_files::MediaFileToken; use ffmpeg_utils::ffprobe::ffprobe_get_info::ffprobe_get_info; @@ -126,21 +127,21 @@ pub async fn process_video_payload( })?; let media_token = MediaFileInsertBuilder::new() - .maybe_creator_user(job.maybe_creator_user_token.as_ref()) - .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) - .creator_ip_address(&job.creator_ip_address) - .public_bucket_directory_hash(&public_upload_path) - .media_file_class(MediaFileClass::Video) - .media_file_type(media_file_type) - .media_file_origin_category(MediaFileOriginCategory::Inference) - //.media_file_origin_product_category(MediaFileOriginProductCategory::Unknown) - .mime_type(mime_type) - .file_size_bytes(file_size_bytes as u64) - .maybe_frame_width(maybe_frame_width) - .maybe_frame_height(maybe_frame_height) - .maybe_duration_millis(maybe_duration_millis) .checksum_sha2(&file_hash) + .creator_ip_address(&job.creator_ip_address) + .file_size_bytes(file_size_bytes as u64) + .maybe_creator_anonymous_visitor(job.maybe_creator_anonymous_visitor_token.as_ref()) + .maybe_creator_user(job.maybe_creator_user_token.as_ref()) + .maybe_duration_millis(maybe_duration_millis) + .maybe_frame_height(maybe_frame_height) + .maybe_frame_width(maybe_frame_width) + .maybe_generation_provider(Some(GenerationProvider::Artcraft)) .maybe_prompt_token(job.maybe_prompt_token.as_ref()) + .media_file_class(MediaFileClass::Video) + .media_file_origin_category(MediaFileOriginCategory::Inference) + .media_file_type(media_file_type) + .mime_type(mime_type) + .public_bucket_directory_hash(&public_upload_path) .insert_pool(&server_state.mysql_pool) .await .map_err(|e| {