mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-13 21:32:18 +00:00
Merge pull request #250 from storytold/brandon-add-bookmark-model-data
add model data to bookmark results
This commit is contained in:
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")?,
|
||||
|
||||
+19
@@ -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.
|
||||
|
||||
Reference in new issue
Block a user