diff --git a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files.rs b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files.rs index 2e58116a14..3429862d39 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files.rs @@ -1,8 +1,8 @@ use chrono::{DateTime, Utc}; use sqlx::{FromRow, MySql, MySqlPool, QueryBuilder, Row}; use sqlx::mysql::MySqlRow; -use enums::by_table::media_files::media_file_class::MediaFileClass; +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_model_type::MediaFileOriginModelType; use enums::by_table::media_files::media_file_origin_product_category::MediaFileOriginProductCategory; @@ -55,6 +55,10 @@ pub struct MediaFileListItem { pub creator_set_visibility: Visibility, + pub maybe_file_cover_image_public_bucket_hash: Option, + pub maybe_file_cover_image_public_bucket_prefix: Option, + pub maybe_file_cover_image_public_bucket_extension: Option, + #[deprecated(note = "more expensive to query")] pub comment_count: u64, @@ -121,6 +125,9 @@ pub async fn list_media_files(args: ListMediaFilesArgs<'_>) -> AnyhowResult, + maybe_file_cover_image_public_bucket_prefix: Option, + maybe_file_cover_image_public_bucket_extension: Option, + comment_count: i64, favorite_count: i64, @@ -366,6 +382,9 @@ impl FromRow<'_, MySqlRow> for MediaFileListItemInternal { maybe_creator_display_name: row.try_get("maybe_creator_display_name")?, maybe_creator_gravatar_hash: row.try_get("maybe_creator_gravatar_hash")?, creator_set_visibility: Visibility::try_from_mysql_row(row, "creator_set_visibility")?, + maybe_file_cover_image_public_bucket_hash: row.try_get("maybe_file_cover_image_public_bucket_hash")?, + maybe_file_cover_image_public_bucket_prefix: row.try_get("maybe_file_cover_image_public_bucket_prefix")?, + maybe_file_cover_image_public_bucket_extension: row.try_get("maybe_file_cover_image_public_bucket_extension")?, maybe_title: row.try_get("maybe_title")?, maybe_text_transcript: row.try_get("maybe_text_transcript")?, created_at: row.try_get("created_at")?, diff --git a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_tokens.rs b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_tokens.rs index b604b29107..aa1959791f 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_tokens.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_tokens.rs @@ -44,6 +44,10 @@ pub struct MediaFilesByTokensRecord { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + pub maybe_file_cover_image_public_bucket_hash: Option, + pub maybe_file_cover_image_public_bucket_prefix: Option, + pub maybe_file_cover_image_public_bucket_extension: Option, + pub created_at: DateTime, pub updated_at: DateTime, } @@ -146,6 +150,10 @@ async fn get_raw_media_files_by_tokens( entity_stats.ratings_negative_count as maybe_ratings_negative_count, entity_stats.bookmark_count as maybe_bookmark_count, + media_file_cover_image.public_bucket_directory_hash as maybe_file_cover_image_public_bucket_hash, + media_file_cover_image.maybe_public_bucket_prefix as maybe_file_cover_image_public_bucket_prefix, + media_file_cover_image.maybe_public_bucket_extension as maybe_file_cover_image_public_bucket_extension, + m.created_at, m.updated_at @@ -157,6 +165,8 @@ async fn get_raw_media_files_by_tokens( LEFT OUTER JOIN entity_stats ON entity_stats.entity_type = "media_file" AND entity_stats.entity_token = m.token + LEFT OUTER JOIN media_files as media_file_cover_image + ON media_file_cover_image.token = m.maybe_cover_image_media_file_token WHERE m.creator_set_visibility = "public" AND m.user_deleted_at IS NULL @@ -218,6 +228,10 @@ fn map_to_media_files(dataset:Vec) -> Vec) -> Vec, pub maybe_text_transcript: Option, + pub maybe_file_cover_image_public_bucket_hash: Option, + pub maybe_file_cover_image_public_bucket_prefix: Option, + pub maybe_file_cover_image_public_bucket_extension: Option, + pub created_at: DateTime, pub updated_at: DateTime, } @@ -295,6 +313,9 @@ impl FromRow<'_, MySqlRow> for RawMediaFileJoinUser { maybe_bookmark_count: row.try_get("maybe_bookmark_count")?, maybe_title: row.try_get("maybe_title")?, maybe_text_transcript: row.try_get("maybe_text_transcript")?, + maybe_file_cover_image_public_bucket_hash: row.try_get("maybe_file_cover_image_public_bucket_hash")?, + maybe_file_cover_image_public_bucket_prefix: row.try_get("maybe_file_cover_image_public_bucket_prefix")?, + maybe_file_cover_image_public_bucket_extension: row.try_get("maybe_file_cover_image_public_bucket_extension")?, created_at: row.try_get("created_at")?, updated_at: row.try_get("updated_at")?, }) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs index df4fcd1481..8c187516c5 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs @@ -166,7 +166,12 @@ pub async fn list_featured_media_files_handler( token: m.token.clone(), media_type: m.media_type, public_bucket_path, - cover_image: MediaFileCoverImageDetails::from_token(&m.token), + cover_image: MediaFileCoverImageDetails::from_optional_db_fields( + &m.token, + m.maybe_file_cover_image_public_bucket_hash.as_deref(), + m.maybe_file_cover_image_public_bucket_prefix.as_deref(), + m.maybe_file_cover_image_public_bucket_extension.as_deref(), + ), origin: MediaFileOriginDetails::from_db_fields_str( m.origin_category, m.origin_product_category, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs index 937c75b670..a885502519 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs @@ -245,7 +245,12 @@ pub async fn list_media_files_handler( record.maybe_public_bucket_extension.as_deref()) .get_full_object_path_str() .to_string(), - cover_image: MediaFileCoverImageDetails::from_token(&record.token), + cover_image: MediaFileCoverImageDetails::from_optional_db_fields( + &record.token, + record.maybe_file_cover_image_public_bucket_hash.as_deref(), + record.maybe_file_cover_image_public_bucket_prefix.as_deref(), + record.maybe_file_cover_image_public_bucket_extension.as_deref(), + ), maybe_creator: UserDetailsLight::from_optional_db_fields_owned( record.maybe_creator_user_token, record.maybe_creator_username,