From 78263e3c49caa4993d7e87d6183d7be0df5fee54 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Sun, 23 Apr 2023 03:58:16 -0700 Subject: [PATCH] media token type --- crates/_types/enums/src/by_table/mod.rs | 1 + .../by_table/voice_conversion_results/mod.rs | 1 + .../voice_conversion_media_token_type.rs | 60 +++++++++++++++++++ .../results/insert_voice_conversion_result.rs | 7 ++- 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 crates/_types/enums/src/by_table/voice_conversion_results/mod.rs create mode 100644 crates/_types/enums/src/by_table/voice_conversion_results/voice_conversion_media_token_type.rs diff --git a/crates/_types/enums/src/by_table/mod.rs b/crates/_types/enums/src/by_table/mod.rs index 4329017302..2de5f75b29 100644 --- a/crates/_types/enums/src/by_table/mod.rs +++ b/crates/_types/enums/src/by_table/mod.rs @@ -9,6 +9,7 @@ pub mod trending_model_analytics; pub mod tts_models; pub mod user_ratings; pub mod voice_conversion_models; +pub mod voice_conversion_results; // ===== Sqlite ===== pub mod tts_render_tasks; diff --git a/crates/_types/enums/src/by_table/voice_conversion_results/mod.rs b/crates/_types/enums/src/by_table/voice_conversion_results/mod.rs new file mode 100644 index 0000000000..b1edddf9f7 --- /dev/null +++ b/crates/_types/enums/src/by_table/voice_conversion_results/mod.rs @@ -0,0 +1 @@ +pub mod voice_conversion_media_token_type; \ No newline at end of file diff --git a/crates/_types/enums/src/by_table/voice_conversion_results/voice_conversion_media_token_type.rs b/crates/_types/enums/src/by_table/voice_conversion_results/voice_conversion_media_token_type.rs new file mode 100644 index 0000000000..5b8ebcdb77 --- /dev/null +++ b/crates/_types/enums/src/by_table/voice_conversion_results/voice_conversion_media_token_type.rs @@ -0,0 +1,60 @@ +use serde::Deserialize; +use serde::Serialize; + +#[cfg(test)] +use strum::EnumCount; +#[cfg(test)] +use strum::EnumIter; + +/// Used in the `voice_conversion_results` table in a `VARCHAR` field. +/// +/// DO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY. +#[cfg_attr(test, derive(EnumIter, EnumCount))] +#[derive(Clone, Copy, Eq, PartialEq, Deserialize, Serialize)] +#[serde(rename_all = "snake_case")] +pub enum VoiceConversionMediaTokenType { + /// Media token refers to record in `media_uploads` table. + MediaUpload, +} + +// TODO(bt, 2022-12-21): This desperately needs MySQL integration tests! +impl_enum_display_and_debug_using_to_str!(VoiceConversionMediaTokenType); +impl_mysql_enum_coders!(VoiceConversionMediaTokenType); + +/// NB: Legacy API for older code. +impl VoiceConversionMediaTokenType { + pub fn to_str(&self) -> &'static str { + match self { + Self::MediaUpload => "media_upload", + } + } + + pub fn from_str(value: &str) -> Result { + match value { + "media_upload" => Ok(Self::MediaUpload), + _ => Err(format!("invalid value: {:?}", value)), + } + } +} + +#[cfg(test)] +mod tests { + use crate::by_table::voice_conversion_results::voice_conversion_media_token_type::VoiceConversionMediaTokenType; + use crate::test_helpers::assert_serialization; + + #[test] + fn test_serialization() { + assert_serialization(VoiceConversionMediaTokenType::MediaUpload, "media_upload"); + } + + #[test] + fn test_to_str() { + assert_eq!(VoiceConversionMediaTokenType::MediaUpload.to_str(), "media_upload"); + } + + #[test] + fn test_from_str() { + assert_eq!(VoiceConversionMediaTokenType::from_str("media_upload").unwrap(), VoiceConversionMediaTokenType::MediaUpload); + assert!(VoiceConversionMediaTokenType::from_str("foo").is_err()); + } +} diff --git a/crates/lib/mysql_queries/src/queries/voice_conversion/results/insert_voice_conversion_result.rs b/crates/lib/mysql_queries/src/queries/voice_conversion/results/insert_voice_conversion_result.rs index 87637e07af..c583fb95d0 100644 --- a/crates/lib/mysql_queries/src/queries/voice_conversion/results/insert_voice_conversion_result.rs +++ b/crates/lib/mysql_queries/src/queries/voice_conversion/results/insert_voice_conversion_result.rs @@ -4,6 +4,7 @@ use errors::AnyhowResult; use log::warn; use sqlx::MySqlPool; use sqlx; +use enums::by_table::voice_conversion_results::voice_conversion_media_token_type::VoiceConversionMediaTokenType; use tokens::tokens::voice_conversion_results::VoiceConversionResultToken; /// Used to give user-facing order to logged in user inference requests @@ -98,7 +99,9 @@ SET token = ?, model_token = ?, + media_token = ?, + media_token_type= ?, maybe_creator_user_token = ?, maybe_creator_synthetic_id = ?, @@ -119,7 +122,9 @@ SET result_token.as_str(), args.job.maybe_model_token, - "", + + "", // TODO + VoiceConversionMediaTokenType::MediaUpload.to_str(), args.job.maybe_creator_user_token, maybe_creator_synthetic_id,