diff --git a/crates/lib/mysql_queries/src/queries/model_weights/list/list_weights_by_tokens.rs b/crates/lib/mysql_queries/src/queries/model_weights/list/list_weights_by_tokens.rs index 1a2bb42cbf..87fe1acea6 100644 --- a/crates/lib/mysql_queries/src/queries/model_weights/list/list_weights_by_tokens.rs +++ b/crates/lib/mysql_queries/src/queries/model_weights/list/list_weights_by_tokens.rs @@ -33,6 +33,10 @@ pub struct WeightsByTokensRecord { pub maybe_cover_image_public_bucket_prefix: Option, pub maybe_cover_image_public_bucket_extension: Option, + pub maybe_ratings_positive_count: Option, + pub maybe_ratings_negative_count: Option, + pub maybe_bookmark_count: Option, + //pub cached_user_ratings_total_count: u32, //pub cached_user_ratings_positive_count: u32, //pub cached_user_ratings_negative_count: u32, @@ -88,6 +92,9 @@ async fn get_raw_weights_by_tokens( mw.cached_user_ratings_total_count, mw.maybe_cached_user_ratings_ratio, mw.cached_user_ratings_last_updated_at, + 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, mw.created_at, mw.updated_at, mw.user_deleted_at, @@ -97,6 +104,9 @@ async fn get_raw_weights_by_tokens( ON users.token = mw.creator_user_token LEFT OUTER JOIN media_files as cover_image ON cover_image.token = mw.maybe_cover_image_media_file_token + LEFT OUTER JOIN entity_stats + ON entity_stats.entity_type = "model_weights" + AND entity_stats.entity_token = mw.token WHERE mw.creator_set_visibility = "public" AND mw.token IN ( @@ -125,6 +135,9 @@ async fn get_raw_weights_by_tokens( mw.cached_user_ratings_total_count, mw.maybe_cached_user_ratings_ratio, mw.cached_user_ratings_last_updated_at, + 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, mw.created_at, mw.updated_at, mw.user_deleted_at, @@ -134,6 +147,9 @@ async fn get_raw_weights_by_tokens( ON users.token = mw.creator_user_token LEFT OUTER JOIN media_files as cover_image ON cover_image.token = mw.maybe_cover_image_media_file_token + LEFT OUTER JOIN entity_stats + ON entity_stats.entity_type = "model_weights" + AND entity_stats.entity_token = mw.token WHERE mw.creator_set_visibility = "public" AND mw.user_deleted_at IS NULL @@ -187,11 +203,9 @@ fn map_to_weights(dataset:Vec) -> Vec maybe_cover_image_public_bucket_prefix: weight.maybe_cover_image_public_bucket_prefix, maybe_cover_image_public_bucket_extension: weight.maybe_cover_image_public_bucket_extension, - //cached_user_ratings_negative_count: weight.cached_user_ratings_negative_count, - //cached_user_ratings_positive_count: weight.cached_user_ratings_positive_count, - //cached_user_ratings_total_count: weight.cached_user_ratings_total_count, - //maybe_cached_user_ratings_ratio: weight.maybe_cached_user_ratings_ratio, - //cached_user_ratings_last_updated_at: weight.cached_user_ratings_last_updated_at, + maybe_ratings_positive_count: weight.maybe_ratings_positive_count, + maybe_ratings_negative_count: weight.maybe_ratings_negative_count, + maybe_bookmark_count: weight.maybe_bookmark_count, created_at: weight.created_at, updated_at: weight.updated_at, @@ -225,6 +239,10 @@ fn map_to_weights(dataset:Vec) -> Vec pub maybe_cover_image_public_bucket_prefix: Option, pub maybe_cover_image_public_bucket_extension: Option, + pub maybe_ratings_positive_count: Option, + pub maybe_ratings_negative_count: Option, + pub maybe_bookmark_count: Option, + //pub cached_user_ratings_total_count: u32, //pub cached_user_ratings_positive_count: u32, //pub cached_user_ratings_negative_count: u32, @@ -266,11 +284,9 @@ impl FromRow<'_, MySqlRow> for RawWeightJoinUser { maybe_cover_image_public_bucket_hash: row.try_get("maybe_cover_image_public_bucket_hash")?, maybe_cover_image_public_bucket_prefix: row.try_get("maybe_cover_image_public_bucket_prefix")?, maybe_cover_image_public_bucket_extension: row.try_get("maybe_cover_image_public_bucket_extension")?, - //cached_user_ratings_total_count: row.try_get("cached_user_ratings_total_count")?, - //cached_user_ratings_positive_count: row.try_get("cached_user_ratings_positive_count")?, - //cached_user_ratings_negative_count: row.try_get("cached_user_ratings_negative_count")?, - //maybe_cached_user_ratings_ratio: row.try_get("maybe_cached_user_ratings_ratio")?, - //cached_user_ratings_last_updated_at: row.try_get("cached_user_ratings_last_updated_at")?, + 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")?, user_deleted_at: row.try_get("user_deleted_at")?, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/weights/list_featured_weights.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/weights/list_featured_weights.rs index 622e966a0f..91c86066e5 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/weights/list_featured_weights.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/weights/list_featured_weights.rs @@ -7,8 +7,8 @@ use chrono::{DateTime, Utc}; use log::{debug, error, warn}; use r2d2_redis::redis::Commands; use utoipa::ToSchema; -use buckets::public::media_files::bucket_file_path::MediaFileBucketPath; +use buckets::public::media_files::bucket_file_path::MediaFileBucketPath; use enums::by_table::model_weights::{ weights_category::WeightsCategory, weights_types::WeightsType, @@ -16,6 +16,7 @@ use enums::by_table::model_weights::{ use mysql_queries::queries::model_weights::list::list_weights_by_tokens::list_weights_by_tokens; use tokens::tokens::model_weights::ModelWeightToken; +use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats; use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::server_state::ServerState; @@ -40,10 +41,8 @@ pub struct ModelWeightForList { /// If a cover image is set, this is the path to the asset. pub maybe_cover_image_public_bucket_path: Option, - //pub cached_user_ratings_total_count: u32, - //pub cached_user_ratings_positive_count: u32, - //pub cached_user_ratings_negative_count: u32, - //pub maybe_cached_user_ratings_ratio: Option, + /// Statistics about the weights + pub stats: SimpleEntityStats, pub created_at: DateTime, pub updated_at: DateTime, @@ -153,10 +152,10 @@ pub async fn list_featured_weights_handler( &w.creator_display_name, &w.creator_email_gravatar_hash ), - //cached_user_ratings_total_count: w.cached_user_ratings_total_count, - //cached_user_ratings_positive_count: w.cached_user_ratings_positive_count, - //cached_user_ratings_negative_count: w.cached_user_ratings_negative_count, - //maybe_cached_user_ratings_ratio: w.maybe_cached_user_ratings_ratio, + stats: SimpleEntityStats { + positive_rating_count: w.maybe_ratings_positive_count.unwrap_or(0), + bookmark_count: w.maybe_bookmark_count.unwrap_or(0), + }, created_at: w.created_at, updated_at: w.updated_at, }