mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 17:58:55 +00:00
add input media file to enqueue VST
This commit is contained in:
1 parent
0dbb261dad
commit
8d8e366f49
3 files changed
+22
-7
No files matched your search
+10
-1
@@ -11,6 +11,8 @@ use strum::EnumIter;
|
||||
#[cfg_attr(test, derive(EnumIter, EnumCount))]
|
||||
#[derive(Clone, Copy, Eq, PartialEq, Hash, Ord, PartialOrd, Deserialize, Serialize)]
|
||||
pub enum InferenceInputSourceTokenType {
|
||||
#[serde(rename = "media_file")]
|
||||
MediaFile,
|
||||
#[serde(rename = "media_upload")]
|
||||
MediaUpload,
|
||||
}
|
||||
@@ -23,12 +25,14 @@ impl_mysql_enum_coders!(InferenceInputSourceTokenType);
|
||||
impl InferenceInputSourceTokenType {
|
||||
pub fn to_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::MediaFile => "media_file",
|
||||
Self::MediaUpload => "media_upload",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_str(value: &str) -> Result<Self, String> {
|
||||
match value {
|
||||
"media_file" => Ok(Self::MediaFile),
|
||||
"media_upload" => Ok(Self::MediaUpload),
|
||||
_ => Err(format!("invalid value: {:?}", value)),
|
||||
}
|
||||
@@ -38,6 +42,7 @@ impl InferenceInputSourceTokenType {
|
||||
// NB: BTreeSet is sorted
|
||||
// NB: BTreeSet::from() isn't const, but not worth using LazyStatic, etc.
|
||||
BTreeSet::from([
|
||||
InferenceInputSourceTokenType::MediaFile,
|
||||
InferenceInputSourceTokenType::MediaUpload,
|
||||
])
|
||||
}
|
||||
@@ -50,16 +55,19 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_serialization() {
|
||||
assert_serialization(InferenceInputSourceTokenType::MediaFile, "media_file");
|
||||
assert_serialization(InferenceInputSourceTokenType::MediaUpload, "media_upload");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn to_str() {
|
||||
assert_eq!(InferenceInputSourceTokenType::MediaFile.to_str(), "media_file");
|
||||
assert_eq!(InferenceInputSourceTokenType::MediaUpload.to_str(), "media_upload");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn from_str() {
|
||||
assert_eq!(InferenceInputSourceTokenType::from_str("media_file").unwrap(), InferenceInputSourceTokenType::MediaFile);
|
||||
assert_eq!(InferenceInputSourceTokenType::from_str("media_upload").unwrap(), InferenceInputSourceTokenType::MediaUpload);
|
||||
}
|
||||
|
||||
@@ -67,7 +75,8 @@ mod tests {
|
||||
fn all_variants() {
|
||||
// Static check
|
||||
let mut variants = InferenceInputSourceTokenType::all_variants();
|
||||
assert_eq!(variants.len(), 1);
|
||||
assert_eq!(variants.len(), 2);
|
||||
assert_eq!(variants.pop_first(), Some(InferenceInputSourceTokenType::MediaFile));
|
||||
assert_eq!(variants.pop_first(), Some(InferenceInputSourceTokenType::MediaUpload));
|
||||
assert_eq!(variants.pop_first(), None);
|
||||
|
||||
|
||||
+3
-2
@@ -12,6 +12,7 @@ use actix_web::http::StatusCode;
|
||||
use log::{error, info, warn};
|
||||
|
||||
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
|
||||
use enums::by_table::generic_inference_jobs::inference_input_source_token_type::InferenceInputSourceTokenType;
|
||||
use enums::by_table::generic_inference_jobs::inference_job_type::InferenceJobType;
|
||||
use enums::by_table::generic_inference_jobs::inference_model_type::InferenceModelType;
|
||||
use enums::common::visibility::Visibility;
|
||||
@@ -283,8 +284,8 @@ pub async fn enqueue_comfy_ui_handler(
|
||||
inference_category: InferenceCategory::Workflow,
|
||||
maybe_model_type: Some(InferenceModelType::ComfyUi), // NB: Model is static during inference
|
||||
maybe_model_token: None, // NB: Model is static during inference
|
||||
maybe_input_source_token: None, // TODO: Introduce a second foreign key ?
|
||||
maybe_input_source_token_type: None, // TODO: Introduce a second foreign key ?
|
||||
maybe_input_source_token: request.maybe_input_file.as_ref().map(|f| f.as_str()),
|
||||
maybe_input_source_token_type: Some(InferenceInputSourceTokenType::MediaFile),
|
||||
maybe_download_url: None,
|
||||
maybe_cover_image_media_file_token: None,
|
||||
maybe_raw_inference_text: None, // No text
|
||||
|
||||
+9
-4
@@ -12,6 +12,7 @@ use log::{error, info, warn};
|
||||
use utoipa::ToSchema;
|
||||
|
||||
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
|
||||
use enums::by_table::generic_inference_jobs::inference_input_source_token_type::InferenceInputSourceTokenType;
|
||||
use enums::by_table::generic_inference_jobs::inference_job_type::InferenceJobType;
|
||||
use enums::by_table::generic_inference_jobs::inference_model_type::InferenceModelType;
|
||||
use enums::common::visibility::Visibility;
|
||||
@@ -23,6 +24,7 @@ use mysql_queries::payloads::generic_inference_args::workflow_payload::WorkflowA
|
||||
use mysql_queries::queries::generic_inference::web::insert_generic_inference_job::{insert_generic_inference_job, InsertGenericInferenceArgs};
|
||||
use mysql_queries::queries::idepotency_tokens::insert_idempotency_token::insert_idempotency_token;
|
||||
use tokens::tokens::generic_inference_jobs::InferenceJobToken;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
|
||||
use crate::configs::plans::get_correct_plan_for_session::get_correct_plan_for_session;
|
||||
use crate::configs::plans::plan_category::PlanCategory;
|
||||
@@ -44,9 +46,12 @@ pub struct EnqueueVideoStyleTransferRequest {
|
||||
/// Entropy for request de-duplication (required)
|
||||
uuid_idempotency_token: String,
|
||||
|
||||
/// The video to use as input (required)
|
||||
input_media_file_token: MediaFileToken,
|
||||
|
||||
/// The name of the style to invoke (required)
|
||||
style: StyleTransferName,
|
||||
|
||||
|
||||
/// The positive prompt (optional)
|
||||
prompt: Option<String>,
|
||||
|
||||
@@ -244,6 +249,7 @@ pub async fn enqueue_video_style_transfer_handler(
|
||||
}
|
||||
|
||||
let inference_args = WorkflowArgs {
|
||||
maybe_input_file: Some(request.input_media_file_token.clone()),
|
||||
style_name: Some(request.style),
|
||||
creator_visibility: Some(set_visibility),
|
||||
trim_start_milliseconds: Some(trim_start_millis),
|
||||
@@ -255,7 +261,6 @@ pub async fn enqueue_video_style_transfer_handler(
|
||||
maybe_lora_model: None,
|
||||
maybe_json_modifications: None,
|
||||
maybe_workflow_config: None,
|
||||
maybe_input_file: None,
|
||||
maybe_output_path: None,
|
||||
maybe_google_drive_link: None,
|
||||
maybe_title: None,
|
||||
@@ -274,8 +279,8 @@ pub async fn enqueue_video_style_transfer_handler(
|
||||
inference_category: InferenceCategory::Workflow,
|
||||
maybe_model_type: Some(InferenceModelType::ComfyUi), // NB: Model is static during inference
|
||||
maybe_model_token: None, // NB: Model is static during inference
|
||||
maybe_input_source_token: None, // TODO: Introduce a second foreign key ?
|
||||
maybe_input_source_token_type: None, // TODO: Introduce a second foreign key ?
|
||||
maybe_input_source_token: Some(request.input_media_file_token.as_str()),
|
||||
maybe_input_source_token_type: Some(InferenceInputSourceTokenType::MediaFile),
|
||||
maybe_download_url: None,
|
||||
maybe_cover_image_media_file_token: None,
|
||||
maybe_raw_inference_text: None, // No text
|
||||
|
||||
Reference in new issue
Block a user