From 2f73ded001af3ec6aecd7451c8666105811f0c3e Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Sat, 4 Apr 2026 21:29:40 -0400 Subject: [PATCH] get rid of PublicInferenceJobType --- .../by_table/generic_inference_jobs/mod.rs | 1 - .../public_inference_job_type.rs | 282 ------------------ .../public/enums_public/src/by_table/mod.rs | 1 - 3 files changed, 284 deletions(-) delete mode 100644 crates/schema/public/enums_public/src/by_table/generic_inference_jobs/mod.rs delete mode 100644 crates/schema/public/enums_public/src/by_table/generic_inference_jobs/public_inference_job_type.rs diff --git a/crates/schema/public/enums_public/src/by_table/generic_inference_jobs/mod.rs b/crates/schema/public/enums_public/src/by_table/generic_inference_jobs/mod.rs deleted file mode 100644 index 4689847089..0000000000 --- a/crates/schema/public/enums_public/src/by_table/generic_inference_jobs/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod public_inference_job_type; \ No newline at end of file diff --git a/crates/schema/public/enums_public/src/by_table/generic_inference_jobs/public_inference_job_type.rs b/crates/schema/public/enums_public/src/by_table/generic_inference_jobs/public_inference_job_type.rs deleted file mode 100644 index 9a3ac1373b..0000000000 --- a/crates/schema/public/enums_public/src/by_table/generic_inference_jobs/public_inference_job_type.rs +++ /dev/null @@ -1,282 +0,0 @@ -#[cfg(test)] -use strum::EnumCount; -#[cfg(test)] -use strum::EnumIter; -use utoipa::ToSchema; - -use enums::by_table::generic_inference_jobs::inference_job_type::InferenceJobType; - -/// Report certain jobs publicly as different from what we actually run. -/// This is so we have an edge against the competition that might try to run -/// the same models or workflows. 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, Default, ToSchema, Debug)] -#[serde(rename_all = "snake_case")] -pub enum PublicInferenceJobType { - - // ======= Renamed enum variants ====== - - /// Instead of `InferenceJobType::LivePortrait` ("live_portrait") - /// This is not necessary anymore since we call the product "live portrait" in production - ActingFace, - - /// Instead of `InferenceJobType::FaceFusion` ("face_fusion") - Lipsync, - - /// Storyteller Studio and Video Style Transfer Jobs (which we may want to split). - /// These run in Comfy. - /// TODO(bt,2024-07-15): We may segregate these two job types in the future - VideoRender, - - GptSovits, - - #[serde(rename = "f5_tts")] - F5TTS, - - // ======= Everything else is the same ======= - - /// No need to hide this. - #[serde(rename = "fal_queue")] - FalQueue, - - /// Jobs that run ComfyUI workflows - /// This is actually just for Video Style Transfer and Storyteller Studio. - #[deprecated(note = "Use VideoRender instead.")] - ComfyUi, - - /// Second gen studio - #[serde(rename = "studio_gen2")] - StudioGen2, - - /// A job that turns "FBX" game engine files into "GLTF" files (Bevy-compatible). - #[serde(rename = "convert_fbx_gltf")] - ConvertFbxToGltf, - - /// Process a video into BVH mocap animation data for game engines - MocapNet, - - /// RVC is a voice conversion model. RVCv2 is the most popular such model currently. - #[serde(rename = "rvc_v2")] - RvcV2, - - /// SadTalker does image-to-video lip-syncing when given an audio file and image. - SadTalker, - - /// Seed-VC - #[serde(rename = "seed_vc")] - SeedVc, - - /// so-vits-svc voice conversion. This predates RVCv2. - SoVitsSvc, - - /// Stable diffusion image generation - StableDiffusion, - - /// StyleTTS2 is a zero shot multi-speaker TTS model. - /// This job type should handle both speaker vector encoding and inference. - #[serde(rename = "styletts2")] - StyleTTS2, - - /// TT2 Text to speech - Tacotron2, - - /// A value we may use in the future for historical jobs - /// (i.e. when we backfill the database column and make it non-nullable) - #[default] - Unknown, - - /// DEPRECATED. DO NOT USE. - /// Job that converts bevy to workflow files - #[deprecated(note = "This was for Bevy engine's server side rendering.")] - #[serde(rename = "bevy_to_workflow")] - BevyToWorkflow, - - #[deprecated(note = "This was for ReRenderAVideo, which we never productionized.")] - /// DEPRECATED. DO NOT USE. - /// Re-render a video is a video style transfer algorithm. We developed code - /// around it, but chose to develop AnimateDiff / ComfyUI support instead. - RerenderAVideo, - - /// Sora GPT 4o image gen - #[serde(rename = "image_gen_api")] - ImageGenApi, - - /// Seedance 2 Pro video generation jobs. We poll for results. - #[serde(rename = "seedance2pro_queue")] - Seedance2ProQueue, - - /// Seedance 2 Pro character generation jobs. We poll for results. - #[serde(rename = "seedance2pro_character")] - Seedance2ProCharacter, - - /// World Labs splat generation jobs. We poll for results. - #[serde(rename = "worldlabs_queue")] - WorldlabsQueue, -} - -/// NB: Legacy API for older code. -impl PublicInferenceJobType { - - pub fn from_enum(inference_job_type: InferenceJobType) -> Self { - match inference_job_type { - // Renamed variants - InferenceJobType::LivePortrait => Self::ActingFace, - InferenceJobType::FaceFusion => Self::Lipsync, - // Conserved variants - InferenceJobType::FalQueue => Self::FalQueue, - InferenceJobType::VideoRender => Self::VideoRender, - InferenceJobType::GptSovits => Self::GptSovits, - InferenceJobType::F5TTS => Self::F5TTS, - InferenceJobType::ComfyUi => Self::ComfyUi, - InferenceJobType::StudioGen2 => Self::StudioGen2, - InferenceJobType::ConvertFbxToGltf => Self::ConvertFbxToGltf, - InferenceJobType::MocapNet => Self::MocapNet, - InferenceJobType::RvcV2 => Self::RvcV2, - InferenceJobType::SadTalker => Self::SadTalker, - InferenceJobType::SeedVc => Self::SeedVc, - InferenceJobType::SoVitsSvc => Self::SoVitsSvc, - InferenceJobType::StableDiffusion => Self::StableDiffusion, - InferenceJobType::StyleTTS2 => Self::StyleTTS2, - InferenceJobType::Tacotron2 => Self::Tacotron2, - InferenceJobType::Unknown => Self::Unknown, - InferenceJobType::BevyToWorkflow => Self::BevyToWorkflow, - InferenceJobType::RerenderAVideo => Self::RerenderAVideo, - InferenceJobType::ImageGenApi => Self::ImageGenApi, - InferenceJobType::Seedance2ProQueue => Self::Seedance2ProQueue, - InferenceJobType::Seedance2ProCharacter => Self::Seedance2ProCharacter, - InferenceJobType::WorldlabsQueue => Self::WorldlabsQueue, - } - } - - pub fn to_enum(&self) -> InferenceJobType { - match self { - // Renamed variants - Self::ActingFace => InferenceJobType::LivePortrait, - Self::Lipsync => InferenceJobType::FaceFusion, - // Conserved variants - Self::FalQueue => InferenceJobType::FalQueue, - Self::VideoRender => InferenceJobType::VideoRender, - Self::GptSovits => InferenceJobType::GptSovits, - Self::F5TTS => InferenceJobType::F5TTS, - Self::ComfyUi => InferenceJobType::ComfyUi, - Self::StudioGen2 => InferenceJobType::StudioGen2, - Self::ConvertFbxToGltf => InferenceJobType::ConvertFbxToGltf, - Self::MocapNet => InferenceJobType::MocapNet, - Self::RvcV2 => InferenceJobType::RvcV2, - Self::SadTalker => InferenceJobType::SadTalker, - Self::SeedVc => InferenceJobType::SeedVc, - Self::SoVitsSvc => InferenceJobType::SoVitsSvc, - Self::StableDiffusion => InferenceJobType::StableDiffusion, - Self::ImageGenApi => InferenceJobType::ImageGenApi, - Self::Seedance2ProQueue => InferenceJobType::Seedance2ProQueue, - Self::Seedance2ProCharacter => InferenceJobType::Seedance2ProCharacter, - Self::WorldlabsQueue => InferenceJobType::WorldlabsQueue, - Self::StyleTTS2 => InferenceJobType::StyleTTS2, - Self::Tacotron2 => InferenceJobType::Tacotron2, - Self::Unknown => InferenceJobType::Unknown, - Self::BevyToWorkflow => InferenceJobType::BevyToWorkflow, - Self::RerenderAVideo => InferenceJobType::RerenderAVideo, - } - } -} - -#[cfg(test)] -mod tests { - use strum::IntoEnumIterator; - - use crate::test_helpers::to_json; - - use super::*; - - fn override_enums() -> &'static [PublicInferenceJobType; 2] { - &[ - PublicInferenceJobType::ActingFace, - PublicInferenceJobType::Lipsync, - ] - } - - mod override_values { - use super::*; - - #[test] - fn acting_face() { - // Public --> Internal - assert_eq!(PublicInferenceJobType::ActingFace.to_enum(), InferenceJobType::LivePortrait); - assert_eq!(to_json(&PublicInferenceJobType::ActingFace.to_enum()), "live_portrait"); - - // Internal --> Public - assert_eq!(PublicInferenceJobType::from_enum(InferenceJobType::LivePortrait), PublicInferenceJobType::ActingFace); - assert_eq!(to_json(&PublicInferenceJobType::from_enum(InferenceJobType::LivePortrait)), "acting_face"); - } - - #[test] - fn lipsync() { - // Public --> Internal - assert_eq!(PublicInferenceJobType::Lipsync.to_enum(), InferenceJobType::FaceFusion); - assert_eq!(to_json(&PublicInferenceJobType::Lipsync.to_enum()), "face_fusion"); - - // Internal --> Public - assert_eq!(PublicInferenceJobType::from_enum(InferenceJobType::FaceFusion), PublicInferenceJobType::Lipsync); - assert_eq!(to_json(&PublicInferenceJobType::from_enum(InferenceJobType::FaceFusion)), "lipsync"); - } - } - - mod mechanical_checks { - use super::*; - - #[test] - fn public_to_internal() { - let mut tested_count = 0; - - for public_variant in PublicInferenceJobType::iter() { - match public_variant { - PublicInferenceJobType::ActingFace | - PublicInferenceJobType::Lipsync => continue, // Can't compare - _ => {} - } - - // Round trip - assert_eq!(public_variant, PublicInferenceJobType::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, PublicInferenceJobType::iter().len() - override_enums().len()); - } - - #[test] - fn internal_to_public() { - let mut tested_count = 0; - - for internal_variant in InferenceJobType::all_variants() { - match internal_variant { - InferenceJobType::LivePortrait | - InferenceJobType::FaceFusion => continue, // Can't compare - _ => {} - } - - // Round trip - assert_eq!(internal_variant, PublicInferenceJobType::from_enum(internal_variant).to_enum()); - - let public_enum_variant = PublicInferenceJobType::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, InferenceJobType::all_variants().len() - override_enums().len()); - } - } -} diff --git a/crates/schema/public/enums_public/src/by_table/mod.rs b/crates/schema/public/enums_public/src/by_table/mod.rs index 5995cb6a4f..afc96c4ef3 100644 --- a/crates/schema/public/enums_public/src/by_table/mod.rs +++ b/crates/schema/public/enums_public/src/by_table/mod.rs @@ -1,3 +1,2 @@ -pub mod generic_inference_jobs; pub mod media_files; pub mod model_weights; \ No newline at end of file