Merge pull request #250 from storytold/brandon-add-bookmark-model-data

add model data to bookmark results
This commit is contained in:
Brandon Thomas authored and GitHub committed 2023-12-28 16:36:07 -05:00
commit b9b5051a99
3 files changed
+37

No files matched your search

@@ -53,6 +53,9 @@ fn select_result_fields() -> &'static str {
media_files.media_type as maybe_media_file_type,
media_files.origin_product_category as maybe_media_file_origin_category,
model_weights.weights_type as maybe_model_weight_type,
model_weights.weights_category as maybe_model_weight_category,
model_weights.title as maybe_descriptive_text_model_weight_title,
tts_models.title as maybe_descriptive_text_tts_model_title,
tts_results.raw_inference_text as maybe_descriptive_text_tts_result_inference_text,
@@ -4,6 +4,8 @@ use sqlx::mysql::MySqlRow;
use enums::by_table::media_files::media_file_origin_category::MediaFileOriginCategory;
use enums::by_table::media_files::media_file_type::MediaFileType;
use enums::by_table::model_weights::weights_category::WeightsCategory;
use enums::by_table::model_weights::weights_types::WeightsType;
use enums::by_table::user_bookmarks::user_bookmark_entity_type::UserBookmarkEntityType;
use enums::traits::mysql_from_row::MySqlFromRow;
use tokens::tokens::user_bookmarks::UserBookmarkToken;
@@ -19,6 +21,12 @@ pub struct UserBookmark {
/// This might be TTS text, a username, etc. It depends on the entity type.
pub maybe_entity_descriptive_text: Option<String>,
/// Only set if the bookmark is of a model_weights record.
pub maybe_model_weight_type: Option<WeightsType>,
/// Only set if the bookmark is of a model_weights record.
pub maybe_model_weight_category: Option<WeightsCategory>,
pub user_token: UserToken,
pub username: String,
pub user_display_name: String,
@@ -47,6 +55,9 @@ pub struct RawUserBookmarkRecord {
pub (crate) maybe_media_file_type: Option<MediaFileType>,
pub (crate) maybe_media_file_origin_category: Option<MediaFileOriginCategory>,
pub (crate) maybe_model_weight_type: Option<WeightsType>,
pub (crate) maybe_model_weight_category: Option<WeightsCategory>,
pub (crate) maybe_descriptive_text_model_weight_title: Option<String>,
pub (crate) maybe_descriptive_text_tts_model_title: Option<String>,
pub (crate) maybe_descriptive_text_tts_result_inference_text: Option<String>,
@@ -78,6 +89,8 @@ impl RawUserBookmarkRecord {
UserBookmarkEntityType::VoiceConversionModel => self.maybe_descriptive_text_voice_conversion_model_title,
UserBookmarkEntityType::ZsVoice => self.maybe_descriptive_text_zs_voice_title,
},
maybe_model_weight_type: self.maybe_model_weight_type,
maybe_model_weight_category: self.maybe_model_weight_category,
user_token: self.user_token,
username: self.username,
user_display_name: self.user_display_name,
@@ -104,6 +117,8 @@ impl FromRow<'_, MySqlRow> for RawUserBookmarkRecord {
deleted_at: row.try_get("deleted_at")?,
maybe_media_file_type: MediaFileType::try_from_mysql_row_nullable(row,"maybe_media_file_type")?,
maybe_media_file_origin_category: MediaFileOriginCategory::try_from_mysql_row_nullable(row,"maybe_media_file_origin_category")?,
maybe_model_weight_type: WeightsType::try_from_mysql_row_nullable(row, "maybe_model_weight_type")?,
maybe_model_weight_category: WeightsCategory::try_from_mysql_row_nullable(row, "maybe_model_weight_category")?,
maybe_descriptive_text_model_weight_title: row.try_get("maybe_descriptive_text_model_weight_title")?,
maybe_descriptive_text_tts_model_title: row.try_get("maybe_descriptive_text_tts_model_title")?,
maybe_descriptive_text_tts_result_inference_text: row.try_get("maybe_descriptive_text_tts_result_inference_text")?,
@@ -82,6 +82,16 @@ pub struct UserBookmarkDetailsForUserList {
// TODO: Populate this for images, video, etc.
pub maybe_thumbnail_url: Option<String>,
/// This is only populated if the item is a model weight.
pub maybe_weights_data: Option<WeightsData>,
}
#[derive(Serialize, ToSchema)]
pub struct WeightsData {
pub title: String,
pub weights_type: WeightsType,
pub weights_category: WeightsCategory,
}
#[derive(Debug, ToSchema)]
@@ -164,6 +174,15 @@ pub async fn list_user_bookmarks_for_user_handler(
details: UserBookmarkDetailsForUserList {
entity_type: user_bookmark.entity_type,
entity_token: user_bookmark.entity_token,
maybe_weights_data: match user_bookmark.entity_type {
UserBookmarkEntityType::ModelWeight => Some(WeightsData {
// TODO(bt,2023-12-28): Proper default, optional, or "unknown" values would be better.
title: user_bookmark.maybe_entity_descriptive_text.clone().unwrap_or("weight".to_string()),
weights_type: user_bookmark.maybe_model_weight_type.unwrap_or(WeightsType::Tacotron2),
weights_category: user_bookmark.maybe_model_weight_category.unwrap_or(WeightsCategory::TextToSpeech),
}),
_ => None,
},
maybe_summary_text: user_bookmark.maybe_entity_descriptive_text,
// TODO(bt,2023-11-21): Thumbnails need proper support. We should build them as a
// first-class system before handling the backfill here.