From cac930f1bcef9273e1b3a2b4f4c6e1ff97aa1685 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 6 May 2024 10:39:03 -0700 Subject: [PATCH] fixes for empty title, add duration field for engine assets --- .../set_all_featured_items_public.sql | 13 +++++++++++++ .../create/insert_media_file_from_file_upload.rs | 7 +++---- .../endpoints/engine/create_scene_handler.rs | 2 +- .../endpoints/engine/process_upload_media_file.rs | 2 +- .../upload/upload_audio_media_file_handler.rs | 2 +- .../upload_engine_asset_media_file_handler.rs | 2 +- .../upload_generic/process_upload_media_file.rs | 2 +- .../upload_new_engine_asset_media_file_handler.rs | 14 ++++++++++++-- .../upload/upload_new_scene_media_file_handler.rs | 6 ++++-- .../upload_video_media_file_handler.rs | 2 +- 10 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 _sql/actions/featured_items/set_all_featured_items_public.sql diff --git a/_sql/actions/featured_items/set_all_featured_items_public.sql b/_sql/actions/featured_items/set_all_featured_items_public.sql new file mode 100644 index 0000000000..00bcb5da31 --- /dev/null +++ b/_sql/actions/featured_items/set_all_featured_items_public.sql @@ -0,0 +1,13 @@ +-- noinspection SqlDialectInspectionForFile +-- noinspection SqlNoDataSourceInspectionForFile +-- noinspection SqlResolveForFile + +-- Set all featured media items public +-- NB: using join since subquery was doing a full table scan despite looking reasonable. +UPDATE media_files m INNER JOIN featured_items items +ON items.entity_token = m.token +AND items.entity_type = 'media_file' + SET m.creator_set_visibility = 'public' +WHERE m.creator_set_visibility IN ('private', 'hidden') +AND items.deleted_at IS NULL; + diff --git a/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_from_file_upload.rs b/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_from_file_upload.rs index aef5e1629a..e98da2d4d9 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_from_file_upload.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_from_file_upload.rs @@ -42,13 +42,10 @@ pub struct InsertMediaFileFromUploadArgs<'a> { pub maybe_mime_type: Option<&'a str>, pub file_size_bytes: u64, - pub duration_millis: u64, pub sha256_checksum: &'a str, - // TODO: Media duration. - //pub duration_millis: u64, - pub maybe_title: Option<&'a str>, + pub maybe_duration_millis: Option, pub public_bucket_directory_hash: &'a str, pub maybe_public_bucket_prefix: Option<&'a str>, @@ -114,6 +111,7 @@ SET checksum_sha2 = ?, maybe_title = ?, + maybe_duration_millis = ?, public_bucket_directory_hash = ?, maybe_public_bucket_prefix = ?, @@ -151,6 +149,7 @@ SET args.sha256_checksum, args.maybe_title, + args.maybe_duration_millis, args.public_bucket_directory_hash, args.maybe_public_bucket_prefix, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/engine/create_scene_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/engine/create_scene_handler.rs index b6872edde3..a6207aab6a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/engine/create_scene_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/engine/create_scene_handler.rs @@ -209,7 +209,7 @@ pub async fn create_scene_handler( maybe_animation_type: None, maybe_mime_type: Some(mime_type), file_size_bytes: file_size_bytes as u64, - duration_millis: 0, // None + maybe_duration_millis: None, sha256_checksum: &hash, maybe_title: upload_media_request.title.as_deref(), public_bucket_directory_hash: public_upload_path.get_object_hash(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/engine/process_upload_media_file.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/engine/process_upload_media_file.rs index 81f9b06b6a..6654baabde 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/engine/process_upload_media_file.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/engine/process_upload_media_file.rs @@ -334,7 +334,7 @@ pub async fn process_upload_media_file( maybe_animation_type: None, maybe_mime_type: Some(mime_type), file_size_bytes: file_size_bytes as u64, - duration_millis: 0, // TODO + maybe_duration_millis: None, sha256_checksum: &hash, maybe_title: upload_media_request.title.as_deref(), public_bucket_directory_hash: public_upload_path.get_object_hash(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_audio_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_audio_media_file_handler.rs index 8eb4ca0d55..65e661dac8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_audio_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_audio_media_file_handler.rs @@ -330,7 +330,7 @@ pub async fn upload_audio_media_file_handler( maybe_animation_type: None, maybe_mime_type: Some(&mimetype), file_size_bytes: file_size_bytes as u64, - duration_millis: maybe_duration_millis.unwrap_or(0), + maybe_duration_millis, sha256_checksum: &hash, maybe_title: maybe_title.as_deref(), public_bucket_directory_hash: public_upload_path.get_object_hash(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_engine_asset/upload_engine_asset_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_engine_asset/upload_engine_asset_media_file_handler.rs index cf5db655a8..ec99f38ae8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_engine_asset/upload_engine_asset_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_engine_asset/upload_engine_asset_media_file_handler.rs @@ -220,7 +220,7 @@ pub async fn upload_engine_asset_media_file_handler( maybe_animation_type: upload_media_request.maybe_animation_type, maybe_mime_type: Some(mimetype), file_size_bytes: file_size_bytes as u64, - duration_millis: 0, + maybe_duration_millis: None, // NB: We're migrating to a new endpoint. sha256_checksum: &hash, maybe_title: upload_media_request.maybe_title.as_deref(), public_bucket_directory_hash: public_upload_path.get_object_hash(), 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 1b9defa4b0..0ea5a4a987 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 @@ -359,7 +359,7 @@ pub async fn process_upload_media_file( maybe_animation_type: None, maybe_mime_type: Some(mime_type), file_size_bytes: file_size_bytes as u64, - duration_millis: 0, // TODO + maybe_duration_millis: None, // TODO: Fix this? sha256_checksum: &hash, maybe_title: upload_media_request.title.as_deref(), public_bucket_directory_hash: public_upload_path.get_object_hash(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_engine_asset_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_engine_asset_media_file_handler.rs index 9b325369cb..2dba12bc90 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_engine_asset_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_engine_asset_media_file_handler.rs @@ -71,6 +71,11 @@ pub struct UploadNewEngineAssetFileForm { #[multipart(limit = "2 KiB")] #[schema(value_type = Option, format = Binary)] maybe_animation_type: Option>, + + /// Optional: The duration, for files that are animations. + #[multipart(limit = "2 KiB")] + #[schema(value_type = Option, format = Binary)] + maybe_duration_millis: Option>, } #[derive(Serialize, ToSchema)] @@ -170,9 +175,14 @@ pub async fn upload_new_engine_asset_media_file_handler( let engine_category = form.engine_category.0; + let maybe_duration_millis = form.maybe_duration_millis + .map(|duration| duration.0); + let maybe_animation_type = form.maybe_animation_type.map(|t| t.0); - let maybe_title = form.maybe_title.map(|title| title.to_string()); + let maybe_title = form.maybe_title + .map(|title| title.trim().to_string()) + .filter(|title| !title.is_empty()); let creator_set_visibility = form.maybe_visibility .map(|visibility| visibility.0) @@ -263,7 +273,7 @@ pub async fn upload_new_engine_asset_media_file_handler( maybe_animation_type, maybe_mime_type: Some(mimetype), file_size_bytes: file_size_bytes as u64, - duration_millis: 0, + maybe_duration_millis, sha256_checksum: &hash, maybe_title: maybe_title.as_deref(), public_bucket_directory_hash: public_upload_path.get_object_hash(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_scene_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_scene_media_file_handler.rs index ba81d4a6e3..8266661820 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_scene_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_new_scene_media_file_handler.rs @@ -164,7 +164,9 @@ pub async fn upload_new_scene_media_file_handler( // ==================== UPLOAD METADATA ==================== // - let maybe_title = form.maybe_title.map(|title| title.to_string()); + let maybe_title = form.maybe_title + .map(|title| title.trim().to_string()) + .filter(|title| !title.is_empty()); let creator_set_visibility = form.maybe_visibility .map(|visibility| visibility.0) @@ -242,7 +244,7 @@ pub async fn upload_new_scene_media_file_handler( maybe_animation_type: None, maybe_mime_type: Some(MIMETYPE), file_size_bytes: file_size_bytes as u64, - duration_millis: 0, + maybe_duration_millis: None, sha256_checksum: &hash, maybe_title: maybe_title.as_deref(), public_bucket_directory_hash: public_upload_path.get_object_hash(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_video/upload_video_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_video/upload_video_media_file_handler.rs index a406d3abf1..d0a34b037c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_video/upload_video_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_video/upload_video_media_file_handler.rs @@ -229,7 +229,7 @@ pub async fn upload_video_media_file_handler( maybe_animation_type: None, maybe_mime_type: Some(mimetype), file_size_bytes: file_size_bytes as u64, - duration_millis: mp4_info.duration_millis as u64, + maybe_duration_millis: Some(mp4_info.duration_millis as u64), sha256_checksum: &hash, maybe_title: upload_media_request.title.as_deref(), public_bucket_directory_hash: public_upload_path.get_object_hash(),