diff --git a/crates/_types/enums_public/src/by_table/media_files/mod.rs b/crates/_types/enums_public/src/by_table/media_files/mod.rs new file mode 100644 index 0000000000..8e824496ab --- /dev/null +++ b/crates/_types/enums_public/src/by_table/media_files/mod.rs @@ -0,0 +1 @@ +pub mod public_media_file_model_type; \ No newline at end of file diff --git a/crates/_types/enums_public/src/by_table/media_files/public_media_file_model_type.rs b/crates/_types/enums_public/src/by_table/media_files/public_media_file_model_type.rs new file mode 100644 index 0000000000..1c9368b9c3 --- /dev/null +++ b/crates/_types/enums_public/src/by_table/media_files/public_media_file_model_type.rs @@ -0,0 +1,228 @@ +use serde::Deserialize; +use serde::Serialize; +#[cfg(test)] +use strum::EnumCount; +#[cfg(test)] +use strum::EnumIter; +use utoipa::ToSchema; + +use enums::by_table::media_files::media_file_origin_model_type::MediaFileOriginModelType; + +/// Report certain models publicly as different from what we actually use. +/// This is so we have an edge against the competition that might try to run +/// the same models. This won't always make sense, but in some cases it will. +#[cfg_attr(test, derive(EnumIter, EnumCount))] +#[derive(Clone, Copy, Eq, PartialEq, Hash, Ord, PartialOrd, Deserialize, Serialize, ToSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum PublicMediaFileModelType { + // Renamed enum variants + + /// Instead of `MediaFileOriginModelType::LivePortrait` ("live_portrait") + #[serde(rename = "face_mirror")] + FaceMirror, + + /// Instead of `MediaFileOriginModelType::SadTalker` ("sad_talker") + #[serde(rename = "face_animator")] + FaceAnimator, + + /// Instead of `MediaFileOriginModelType::StyleTTS2` ("styletts2") + #[serde(rename = "voice_designer")] + VoiceDesigner, + + // Everything else is the same + + /// RVC (v2) voice conversion models + #[serde(rename = "rvc_v2")] + RvcV2, + + /// so-vits-svc voice conversion models + #[serde(rename = "so_vits_svc")] + SoVitsSvc, + + #[serde(rename = "tacotron2")] + Tacotron2, + + #[serde(rename = "mocap_net")] + MocapNet, + + #[serde(rename = "stable_diffusion_1_5")] + StableDiffusion15, + + #[serde(rename = "studio")] + StorytellerStudio, + + #[serde(rename = "vst")] + VideoStyleTransfer, + + #[deprecated(note = "This is not a model type!")] + #[serde(rename = "comfy_ui")] + ComfyUi, + + #[deprecated(note = "We don't use this anymore")] + #[serde(rename = "vall_e_x")] + VallEX, + + #[deprecated(note = "We don't use this anymore")] + #[serde(rename = "rerender")] + Rerender, +} + +/// NB: Legacy API for older code. +impl PublicMediaFileModelType { + pub fn from_enum(model_type: MediaFileOriginModelType) -> Self { + match model_type { + // Renamed variants + MediaFileOriginModelType::LivePortrait => Self::FaceMirror, + MediaFileOriginModelType::SadTalker => Self::FaceAnimator, + MediaFileOriginModelType::StyleTTS2 => Self::VoiceDesigner, + // Conserved variants + MediaFileOriginModelType::RvcV2 => Self::RvcV2, + MediaFileOriginModelType::SoVitsSvc => Self::SoVitsSvc, + MediaFileOriginModelType::Tacotron2 => Self::Tacotron2, + MediaFileOriginModelType::MocapNet => Self::MocapNet, + MediaFileOriginModelType::StableDiffusion15 => Self::StableDiffusion15, + MediaFileOriginModelType::StorytellerStudio => Self::StorytellerStudio, + MediaFileOriginModelType::VideoStyleTransfer => Self::VideoStyleTransfer, + MediaFileOriginModelType::ComfyUi => Self::ComfyUi, + MediaFileOriginModelType::VallEX => Self::VallEX, + MediaFileOriginModelType::Rerender => Self::Rerender, + } + } + + pub fn to_enum(&self) -> MediaFileOriginModelType { + match self { + // Renamed variants + PublicMediaFileModelType::FaceMirror => MediaFileOriginModelType::LivePortrait, + PublicMediaFileModelType::FaceAnimator => MediaFileOriginModelType::SadTalker, + PublicMediaFileModelType::VoiceDesigner => MediaFileOriginModelType::StyleTTS2, + // Conserved variants + PublicMediaFileModelType::RvcV2 => MediaFileOriginModelType::RvcV2, + PublicMediaFileModelType::SoVitsSvc => MediaFileOriginModelType::SoVitsSvc, + PublicMediaFileModelType::Tacotron2 => MediaFileOriginModelType::Tacotron2, + PublicMediaFileModelType::MocapNet => MediaFileOriginModelType::MocapNet, + PublicMediaFileModelType::StableDiffusion15 => MediaFileOriginModelType::StableDiffusion15, + PublicMediaFileModelType::StorytellerStudio => MediaFileOriginModelType::StorytellerStudio, + PublicMediaFileModelType::VideoStyleTransfer => MediaFileOriginModelType::VideoStyleTransfer, + PublicMediaFileModelType::ComfyUi => MediaFileOriginModelType::ComfyUi, + PublicMediaFileModelType::VallEX => MediaFileOriginModelType::VallEX, + PublicMediaFileModelType::Rerender => MediaFileOriginModelType::Rerender, + } + } +} + +#[cfg(test)] +mod tests { + use strum::IntoEnumIterator; + + use crate::test_helpers::to_json; + + use super::*; + + fn override_enums() -> &'static [PublicMediaFileModelType; 3] { + &[ + PublicMediaFileModelType::FaceMirror, + PublicMediaFileModelType::FaceAnimator, + PublicMediaFileModelType::VoiceDesigner, + ] + } + + mod override_values { + use super::*; + + #[test] + fn live_portrait() { + // Public --> Internal + assert_eq!(PublicMediaFileModelType::FaceMirror.to_enum(), MediaFileOriginModelType::LivePortrait); + assert_eq!(to_json(&PublicMediaFileModelType::FaceMirror.to_enum()), "live_portrait"); + + // Internal --> Public + assert_eq!(PublicMediaFileModelType::from_enum(MediaFileOriginModelType::LivePortrait), PublicMediaFileModelType::FaceMirror); + assert_eq!(to_json(&PublicMediaFileModelType::from_enum(MediaFileOriginModelType::LivePortrait)), "face_mirror"); + } + + #[test] + fn sad_talker() { + // Public --> Internal + assert_eq!(PublicMediaFileModelType::FaceAnimator.to_enum(), MediaFileOriginModelType::SadTalker); + assert_eq!(to_json(&PublicMediaFileModelType::FaceAnimator.to_enum()), "sad_talker"); + + // Internal --> Public + assert_eq!(PublicMediaFileModelType::from_enum(MediaFileOriginModelType::SadTalker), PublicMediaFileModelType::FaceAnimator); + assert_eq!(to_json(&PublicMediaFileModelType::from_enum(MediaFileOriginModelType::SadTalker)), "face_animator"); + } + + #[test] + fn styletts2() { + // Public --> Internal + assert_eq!(PublicMediaFileModelType::VoiceDesigner.to_enum(), MediaFileOriginModelType::StyleTTS2); + assert_eq!(to_json(&PublicMediaFileModelType::VoiceDesigner.to_enum()), "styletts2"); + + // Internal --> Public + assert_eq!(PublicMediaFileModelType::from_enum(MediaFileOriginModelType::StyleTTS2), PublicMediaFileModelType::VoiceDesigner); + assert_eq!(to_json(&PublicMediaFileModelType::from_enum(MediaFileOriginModelType::StyleTTS2)), "voice_designer"); + } + } + + mod mechanical_checks { + use enums::by_table::media_files::media_file_origin_model_type::MediaFileOriginModelType; + + use super::*; + + #[test] + fn public_to_internal() { + let mut tested_count = 0; + + for public_variant in PublicMediaFileModelType::iter() { + match public_variant { + PublicMediaFileModelType::FaceMirror | + PublicMediaFileModelType::FaceAnimator | + PublicMediaFileModelType::VoiceDesigner => continue, // Can't compare. + _ => {} + } + + // Round trip + assert_eq!(public_variant, PublicMediaFileModelType::from_enum(public_variant.to_enum())); + + let internal_enum_variant = public_variant.to_enum(); + let internal_enum_string = to_json(&internal_enum_variant); + let public_enum_string = to_json(&public_variant); + + assert_eq!(internal_enum_string, public_enum_string); + + tested_count += 1; + } + + assert!(tested_count > 1); + assert_eq!(tested_count, PublicMediaFileModelType::iter().len() - override_enums().len()); + } + + #[test] + fn internal_to_public() { + let mut tested_count = 0; + + for internal_variant in MediaFileOriginModelType::all_variants() { + match internal_variant { + MediaFileOriginModelType::LivePortrait | + MediaFileOriginModelType::SadTalker | + MediaFileOriginModelType::StyleTTS2 => continue, // Can't compare. + _ => {} + } + + // Round trip + assert_eq!(internal_variant, PublicMediaFileModelType::from_enum(internal_variant).to_enum()); + + let public_enum_variant = PublicMediaFileModelType::from_enum(internal_variant); + let public_enum_string = to_json(&public_enum_variant); + let internal_enum_string = to_json(&internal_variant); + + // Same serialization + assert_eq!(internal_enum_string, public_enum_string); + + tested_count += 1; + } + + assert!(tested_count > 1); + assert_eq!(tested_count, MediaFileOriginModelType::all_variants().len() - override_enums().len()); + } + } +} diff --git a/crates/_types/enums_public/src/by_table/mod.rs b/crates/_types/enums_public/src/by_table/mod.rs index 2ef88db4e6..5995cb6a4f 100644 --- a/crates/_types/enums_public/src/by_table/mod.rs +++ b/crates/_types/enums_public/src/by_table/mod.rs @@ -1,2 +1,3 @@ pub mod generic_inference_jobs; +pub mod media_files; pub mod model_weights; \ No newline at end of file diff --git a/crates/service/web/storyteller_web/src/docs/api_doc.rs b/crates/service/web/storyteller_web/src/docs/api_doc.rs index d8675bebda..cb7b02a130 100644 --- a/crates/service/web/storyteller_web/src/docs/api_doc.rs +++ b/crates/service/web/storyteller_web/src/docs/api_doc.rs @@ -12,7 +12,6 @@ use enums::by_table::media_files::media_file_animation_type::MediaFileAnimationT use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; 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; use enums::by_table::media_files::media_file_subtype::MediaFileSubtype; use enums::by_table::media_files::media_file_type::MediaFileType; @@ -25,6 +24,7 @@ use enums::by_table::users::user_feature_flag::UserFeatureFlag; use enums::common::job_status_plus::JobStatusPlus; use enums::common::visibility::Visibility; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; +use enums_public::by_table::media_files::public_media_file_model_type::PublicMediaFileModelType; use enums_public::by_table::model_weights::public_weights_types::PublicWeightsType; use tokens::tokens::batch_generations::*; use tokens::tokens::beta_keys::*; @@ -245,11 +245,11 @@ use crate::http_server::web_utils::response_success_helpers::*; MediaFileClass, MediaFileEngineCategory, MediaFileOriginCategory, - MediaFileOriginModelType, MediaFileOriginProductCategory, MediaFileSubtype, MediaFileType, PromptType, + PublicMediaFileModelType, PublicWeightsType, StyleTransferName, UserFeatureFlag, diff --git a/crates/service/web/storyteller_web/src/http_server/common_responses/media_file_origin_details.rs b/crates/service/web/storyteller_web/src/http_server/common_responses/media_file_origin_details.rs index 11aaaccbe1..f32433ed9a 100644 --- a/crates/service/web/storyteller_web/src/http_server/common_responses/media_file_origin_details.rs +++ b/crates/service/web/storyteller_web/src/http_server/common_responses/media_file_origin_details.rs @@ -3,6 +3,7 @@ use utoipa::ToSchema; 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; +use enums_public::by_table::media_files::public_media_file_model_type::PublicMediaFileModelType; use tokens::tokens::model_weights::ModelWeightToken; /// Fields useful for enriching media file listings @@ -27,13 +28,13 @@ pub enum MediaFileModelDetails { /// eg. SadTalker, Wav2Lip, MocapNet, etc. SystemModel { /// The type of model weight - model_type: MediaFileOriginModelType, + model_type: PublicMediaFileModelType, }, /// A model weight is typically a user-submitted model. /// We store lots of these. ModelWeight { /// The type of model weight - model_type: MediaFileOriginModelType, + model_type: PublicMediaFileModelType, /// The model token token: ModelWeightToken, /// The model title (typically only populated for `model_weights` models, not legacy tables such as `tts_models`.) @@ -52,14 +53,14 @@ impl MediaFileOriginDetails { let maybe_model = match (maybe_model_type, maybe_model_token, maybe_model_title) { (Some(model_type), Some(model_token), Some(model_title)) => { Some(MediaFileModelDetails::ModelWeight { - model_type, + model_type: PublicMediaFileModelType::from_enum(model_type), token: model_token, title: model_title, }) }, (Some(model_type), None, None) => { Some(MediaFileModelDetails::SystemModel { - model_type, + model_type: PublicMediaFileModelType::from_enum(model_type), }) }, _ => None, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/list_beta_keys_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/list_beta_keys_handler.rs index eecbe12f12..72507e7f69 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/list_beta_keys_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/list_beta_keys_handler.rs @@ -12,27 +12,18 @@ use utoipa::{IntoParams, ToSchema}; use buckets::public::media_files::bucket_file_path::MediaFileBucketPath; use enums::by_table::beta_keys::beta_key_product::BetaKeyProduct; -use enums::by_table::media_files::media_file_animation_type::MediaFileAnimationType; -use enums::by_table::media_files::media_file_class::MediaFileClass; -use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; -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; -use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; -use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use markdown::markdown_with_socials_to_html::markdown_with_socials_to_html; use mysql_queries::queries::beta_keys::list_beta_keys::{FilterToKeys, list_beta_keys, ListBetaKeysArgs}; use mysql_queries::queries::users::user_profiles::get_user_profile_by_username::get_user_profile_by_username; use tokens::tokens::beta_keys::BetaKeyToken; -use tokens::tokens::media_files::MediaFileToken; -use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::http_server::common_responses::media_file_cover_image_details::{MediaFileCoverImageDetails, MediaFileDefaultCover}; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; use crate::http_server::common_responses::pagination_cursors::PaginationCursors; use crate::http_server::common_responses::pagination_page::PaginationPage; use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats; +use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::http_server::endpoints::beta_keys::create_beta_keys_handler::CreateBetaKeysError; use crate::http_server::endpoints::events::list_events::ListEventsError; use crate::http_server::web_utils::require_moderator::{require_moderator, RequireModeratorError}; 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 60ad04dede..bea41230e7 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 @@ -14,11 +14,11 @@ use enums::by_table::media_files::media_file_animation_type::MediaFileAnimationT use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; 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; use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; +use enums_public::by_table::media_files::public_media_file_model_type::PublicMediaFileModelType; use mysql_queries::queries::media_files::get::batch_get_media_files_by_tokens::batch_get_media_files_by_tokens; use mysql_queries::queries::media_files::list::list_featured_media_files::{FeaturedMediaFileListPage, list_featured_media_files, ListFeaturedMediaFilesArgs}; use tokens::tokens::media_files::MediaFileToken; @@ -113,7 +113,7 @@ pub struct FeaturedMediaFile { pub origin_product_category: MediaFileOriginProductCategory, #[deprecated(note="Use MediaFileOriginDetails instead")] - pub maybe_origin_model_type: Option, + pub maybe_origin_model_type: Option, #[deprecated(note="Use MediaFileOriginDetails instead")] pub maybe_origin_model_token: Option, @@ -256,7 +256,8 @@ pub async fn list_featured_media_files_handler( m.maybe_origin_model_title.as_deref()), origin_category: m.origin_category, origin_product_category: m.origin_product_category, - maybe_origin_model_type: m.maybe_origin_model_type, + maybe_origin_model_type: m.maybe_origin_model_type + .map(|t| PublicMediaFileModelType::from_enum(t)), maybe_origin_model_token: m.maybe_origin_model_token, maybe_creator: UserDetailsLight::from_optional_db_fields_owned( m.maybe_creator_user_token, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs index 4d7dd7c98c..e34b0c1bdf 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs @@ -13,12 +13,12 @@ use enums::by_table::media_files::media_file_animation_type::MediaFileAnimationT use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; 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; use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; use enums::common::visibility::Visibility; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; +use enums_public::by_table::media_files::public_media_file_model_type::PublicMediaFileModelType; use mysql_queries::queries::media_files::list::list_media_files_by_batch_token::{list_media_files_by_batch_token, ListMediaFileByBatchArgs}; use mysql_queries::queries::media_files::list::list_media_files_for_user::{list_media_files_for_user, ListMediaFileForUserArgs}; use tokens::tokens::batch_generations::BatchGenerationToken; @@ -84,7 +84,7 @@ pub struct MediaFilesByBatchListItem { pub origin_product_category: MediaFileOriginProductCategory, #[deprecated(note="Use MediaFileOriginDetails instead")] - pub maybe_origin_model_type: Option, + pub maybe_origin_model_type: Option, #[deprecated(note="Use MediaFileOriginDetails instead")] pub maybe_origin_model_token: Option, @@ -246,7 +246,8 @@ pub async fn list_media_files_by_batch_token_handler( record.maybe_origin_model_title.as_deref()), origin_category: record.origin_category, origin_product_category: record.origin_product_category, - maybe_origin_model_type: record.maybe_origin_model_type, + maybe_origin_model_type: record.maybe_origin_model_type + .map(|t| PublicMediaFileModelType::from_enum(t)), maybe_origin_model_token: record.maybe_origin_model_token, public_bucket_path: MediaFileBucketPath::from_object_hash( &record.public_bucket_directory_hash, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs index 15d2c56f31..7a913bfb94 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs @@ -14,12 +14,12 @@ use enums::by_table::media_files::media_file_animation_type::MediaFileAnimationT use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; 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; use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; use enums::common::visibility::Visibility; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; +use enums_public::by_table::media_files::public_media_file_model_type::PublicMediaFileModelType; use mysql_queries::queries::media_files::list::list_media_files_for_user::{list_media_files_for_user, ListMediaFileForUserArgs}; use tokens::tokens::media_files::MediaFileToken; @@ -112,7 +112,7 @@ pub struct MediaFileForUserListItem { pub origin_product_category: MediaFileOriginProductCategory, #[deprecated(note="Use MediaFileOriginDetails instead")] - pub maybe_origin_model_type: Option, + pub maybe_origin_model_type: Option, #[deprecated(note="Use MediaFileOriginDetails instead")] pub maybe_origin_model_token: Option, @@ -300,7 +300,8 @@ pub async fn list_media_files_for_user_handler( record.maybe_origin_model_title.as_deref()), origin_category: record.origin_category, origin_product_category: record.origin_product_category, - maybe_origin_model_type: record.maybe_origin_model_type, + maybe_origin_model_type: record.maybe_origin_model_type + .map(|t| PublicMediaFileModelType::from_enum(t)), maybe_origin_model_token: record.maybe_origin_model_token, public_bucket_path: MediaFileBucketPath::from_object_hash( &record.public_bucket_directory_hash, 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 947aa392a6..98f77c87d3 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 @@ -13,20 +13,20 @@ use enums::by_table::media_files::media_file_animation_type::MediaFileAnimationT use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; 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; use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; use enums::common::visibility::Visibility; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; +use enums_public::by_table::media_files::public_media_file_model_type::PublicMediaFileModelType; use mysql_queries::queries::media_files::list::list_media_files::{list_media_files, ListMediaFilesArgs}; use tokens::tokens::media_files::MediaFileToken; -use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::http_server::common_responses::media_file_cover_image_details::{MediaFileCoverImageDetails, MediaFileDefaultCover}; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; use crate::http_server::common_responses::pagination_cursors::PaginationCursors; use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats; +use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::http_server::endpoints::media_files::helpers::get_scoped_engine_categories::get_scoped_engine_categories; use crate::http_server::endpoints::media_files::helpers::get_scoped_media_classes::get_scoped_media_classes; use crate::http_server::endpoints::media_files::helpers::get_scoped_media_types::get_scoped_media_types; @@ -106,7 +106,7 @@ pub struct MediaFileListItem { pub origin_product_category: MediaFileOriginProductCategory, #[deprecated(note="Use MediaFileOriginDetails instead")] - pub maybe_origin_model_type: Option, + pub maybe_origin_model_type: Option, #[deprecated(note="Use MediaFileOriginDetails instead")] pub maybe_origin_model_token: Option, @@ -306,7 +306,8 @@ pub async fn list_media_files_handler( record.maybe_origin_model_title.as_deref()), origin_category: record.origin_category, origin_product_category: record.origin_product_category, - maybe_origin_model_type: record.maybe_origin_model_type, + maybe_origin_model_type: record.maybe_origin_model_type + .map(|m| PublicMediaFileModelType::from_enum(m)), maybe_origin_model_token: record.maybe_origin_model_token, public_bucket_path: MediaFileBucketPath::from_object_hash( &record.public_bucket_directory_hash, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs index c183e9168e..5f0cae07b5 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs @@ -13,17 +13,17 @@ use enums::by_table::media_files::media_file_animation_type::MediaFileAnimationT use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; 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; use enums::by_table::media_files::media_file_type::MediaFileType; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; +use enums_public::by_table::media_files::public_media_file_model_type::PublicMediaFileModelType; use mysql_queries::queries::media_files::get::batch_get_media_files_by_tokens::batch_get_media_files_by_tokens; use tokens::tokens::media_files::MediaFileToken; -use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::http_server::common_responses::media_file_cover_image_details::{MediaFileCoverImageDetails, MediaFileDefaultCover}; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats; +use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::state::server_state::ServerState; #[derive(Serialize, ToSchema)] @@ -69,7 +69,7 @@ pub struct PinnedMediaFile { pub origin_product_category: MediaFileOriginProductCategory, #[deprecated(note="Use MediaFileOriginDetails instead")] - pub maybe_origin_model_type: Option, + pub maybe_origin_model_type: Option, #[deprecated(note="Use MediaFileOriginDetails instead")] pub maybe_origin_model_token: Option, @@ -210,7 +210,8 @@ pub async fn list_pinned_media_files_handler( m.maybe_origin_model_title.as_deref()), origin_category: m.origin_category, origin_product_category: m.origin_product_category, - maybe_origin_model_type: m.maybe_origin_model_type, + maybe_origin_model_type: m.maybe_origin_model_type + .map(|m| PublicMediaFileModelType::from_enum(m)), maybe_origin_model_token: m.maybe_origin_model_token, maybe_creator: UserDetailsLight::from_optional_db_fields_owned( m.maybe_creator_user_token, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs index b952db2b59..26a2b32f26 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs @@ -13,20 +13,17 @@ use elasticsearch_schema::searches::search_media_files::{search_media_files, Sea use enums::by_table::media_files::media_file_animation_type::MediaFileAnimationType; use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; -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; use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; use enums::common::visibility::Visibility; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use tokens::tokens::media_files::MediaFileToken; -use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::http_server::common_responses::media_file_cover_image_details::{MediaFileCoverImageDetails, MediaFileDefaultCover}; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; use crate::http_server::common_responses::pagination_cursors::PaginationCursors; use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats; +use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::http_server::endpoints::media_files::helpers::get_scoped_engine_categories::get_scoped_engine_categories; use crate::http_server::endpoints::media_files::helpers::get_scoped_media_classes::get_scoped_media_classes; use crate::http_server::endpoints::media_files::helpers::get_scoped_media_types::get_scoped_media_types; @@ -98,21 +95,6 @@ pub struct SearchFeaturedMediaFileListItem { /// this describes the animation regime used or supported. pub maybe_animation_type: Option, - // #[deprecated(note="Use MediaFileOriginDetails instead")] - // pub origin_category: MediaFileOriginCategory, - - // #[deprecated(note="Use MediaFileOriginDetails instead")] - // pub origin_product_category: MediaFileOriginProductCategory, - - // #[deprecated(note="Use MediaFileOriginDetails instead")] - // pub maybe_origin_model_type: Option, - - // #[deprecated(note="Use MediaFileOriginDetails instead")] - // pub maybe_origin_model_token: Option, - - // /// Details where the media file came from. - // pub origin: MediaFileOriginDetails, - /// URL to the media file. pub public_bucket_path: String, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs index 725c7ed540..8a462ff97c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs @@ -13,21 +13,18 @@ use elasticsearch_schema::searches::search_media_files::{search_media_files, Sea use enums::by_table::media_files::media_file_animation_type::MediaFileAnimationType; use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; -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; use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; use enums::common::visibility::Visibility; use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use tokens::tokens::media_files::MediaFileToken; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::http_server::common_responses::media_file_cover_image_details::{MediaFileCoverImageDetails, MediaFileDefaultCover}; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; use crate::http_server::common_responses::pagination_cursors::PaginationCursors; use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats; +use crate::http_server::common_responses::user_details_lite::UserDetailsLight; use crate::http_server::endpoints::media_files::helpers::get_scoped_engine_categories::get_scoped_engine_categories; use crate::http_server::endpoints::media_files::helpers::get_scoped_media_classes::get_scoped_media_classes; use crate::http_server::endpoints::media_files::helpers::get_scoped_media_types::get_scoped_media_types; @@ -99,21 +96,6 @@ pub struct SearchMediaFileListItem { /// this describes the animation regime used or supported. pub maybe_animation_type: Option, - // #[deprecated(note="Use MediaFileOriginDetails instead")] - // pub origin_category: MediaFileOriginCategory, - - // #[deprecated(note="Use MediaFileOriginDetails instead")] - // pub origin_product_category: MediaFileOriginProductCategory, - - // #[deprecated(note="Use MediaFileOriginDetails instead")] - // pub maybe_origin_model_type: Option, - - // #[deprecated(note="Use MediaFileOriginDetails instead")] - // pub maybe_origin_model_token: Option, - - // /// Details where the media file came from. - // pub origin: MediaFileOriginDetails, - /// URL to the media file. pub public_bucket_path: String,