diff --git a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_for_user.rs b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_for_user.rs index 3e5fbfd509..748cb46d98 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_for_user.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_for_user.rs @@ -36,6 +36,10 @@ pub struct MediaFileListItem { pub creator_set_visibility: Visibility, + pub maybe_ratings_positive_count: Option, + pub maybe_ratings_negative_count: Option, + pub maybe_bookmark_count: Option, + pub created_at: DateTime, pub updated_at: DateTime, } @@ -98,6 +102,9 @@ pub async fn list_media_files_for_user(args: ListMediaFileForUserArgs<'_>) -> An maybe_public_bucket_prefix: record.maybe_public_bucket_prefix, maybe_public_bucket_extension: record.maybe_public_bucket_extension, creator_set_visibility: record.creator_set_visibility, + maybe_ratings_positive_count: record.maybe_ratings_positive_count, + maybe_ratings_negative_count: record.maybe_ratings_negative_count, + maybe_bookmark_count: record.maybe_bookmark_count, created_at: record.created_at, updated_at: record.updated_at, } @@ -131,6 +138,11 @@ fn select_result_fields() -> String { m.maybe_public_bucket_extension, m.creator_set_visibility, + + entity_stats.ratings_positive_count as maybe_ratings_positive_count, + entity_stats.ratings_negative_count as maybe_ratings_negative_count, + entity_stats.bookmark_count as maybe_bookmark_count, + m.created_at, m.updated_at "# @@ -163,6 +175,9 @@ SELECT FROM media_files AS m LEFT OUTER JOIN users AS u ON m.maybe_creator_user_token = u.token +LEFT OUTER JOIN entity_stats + ON entity_stats.entity_type = "media_file" + AND entity_stats.entity_token = m.token "# )); @@ -222,6 +237,10 @@ struct MediaFileListItemInternal { creator_set_visibility: Visibility, + maybe_ratings_positive_count: Option, + maybe_ratings_negative_count: Option, + maybe_bookmark_count: Option, + created_at: DateTime, updated_at: DateTime, } @@ -252,6 +271,9 @@ impl FromRow<'_, MySqlRow> for MediaFileListItemInternal { maybe_public_bucket_prefix: row.try_get("maybe_public_bucket_prefix")?, maybe_public_bucket_extension: row.try_get("maybe_public_bucket_extension")?, creator_set_visibility: Visibility::try_from_mysql_row(row, "creator_set_visibility")?, + maybe_ratings_positive_count: row.try_get("maybe_ratings_positive_count")?, + maybe_ratings_negative_count: row.try_get("maybe_ratings_negative_count")?, + maybe_bookmark_count: row.try_get("maybe_bookmark_count")?, 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_media_files_for_user.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list_media_files_for_user.rs index 6b62165912..87fcecca7d 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list_media_files_for_user.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list_media_files_for_user.rs @@ -19,6 +19,7 @@ use mysql_queries::queries::media_files::list::list_media_files_for_user::{list_ use tokens::tokens::media_files::MediaFileToken; use crate::http_server::common_responses::pagination_page::PaginationPage; +use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats; use crate::http_server::web_utils::response_error_helpers::to_simple_json_error; use crate::server_state::ServerState; @@ -58,6 +59,9 @@ pub struct MediaFileForUserListItem { pub creator_set_visibility: Visibility, + /// Statistics about the media file + pub stats: SimpleEntityStats, + pub created_at: DateTime, pub updated_at: DateTime, } @@ -176,6 +180,10 @@ pub async fn list_media_files_for_user_handler( .get_full_object_path_str() .to_string(), creator_set_visibility: record.creator_set_visibility, + stats: SimpleEntityStats { + positive_rating_count: record.maybe_ratings_positive_count.unwrap_or(0), + bookmark_count: record.maybe_bookmark_count.unwrap_or(0), + }, created_at: record.created_at, updated_at: record.updated_at, })