Resolved merge conflict by keeping my changes in process_job.rs

This commit is contained in:
saltacc committed 2024-01-22 10:37:19 -08:00
1 parent 3e875fb6fa
commit 55367e8723
7 files changed
+67 -6

No files matched your search

@@ -686,6 +686,7 @@ Noosphere by skumerz + dalcefoPainting + 饭特稀V08 by zhazhahui345 + GhostMix
pub async fn seed_workflows_for_testing_inference(mysql_pool: &Pool<MySql>, user_token: UserToken) -> AnyhowResult<()>{
let model_weight_token1 = ModelWeightToken::generate_for_testing_and_dev_seeding_never_use_in_production_seriously();
let model_weight_token2 = ModelWeightToken::generate_for_testing_and_dev_seeding_never_use_in_production_seriously();
let model_weight_token3 = ModelWeightToken::generate_for_testing_and_dev_seeding_never_use_in_production_seriously();
let mut path_to_comfy = get_seed_tool_data_root();
path_to_comfy.push("models/workflows/comfyui/workflow_api.json");
@@ -1061,9 +1062,9 @@ pub async fn seed_weights(mysql_pool: &Pool<MySql>) -> AnyhowResult<()> {
// original_seed_weights(mysql_pool,user_token).await?;
// seed_weights_for_user_token(mysql_pool, user_token).await?;
// seed_weights_for_paging(mysql_pool,user_token).await?;
seed_weights_for_testing_inference(mysql_pool,user_token.clone()).await?;
println!("TESTING DOWLOAD");
test_seed_weights_files().await?;
seed_workflows_for_testing_inference(mysql_pool,user_token.clone()).await?;
// seed_weights_for_testing_inference(mysql_pool,user_token.clone()).await?;
// println!("TESTING DOWLOAD");
// test_seed_weights_files().await?;
// seed_workflows_for_testing_inference(mysql_pool,user_token.clone()).await?;
Ok(())
}
@@ -1,4 +1,5 @@
use crate::remote_file_manager::file_descriptor::FileDescriptor;
// TODO ASK BRANDON WHAT path should this be?
const MEDIA_FILE_DIRECTORY: &str = "/media";
@@ -20,3 +21,22 @@ impl FileDescriptor for MediaImagePngDescriptor {
true
}
}
pub struct MediaVideoMp4Descriptor;
impl FileDescriptor for MediaVideoMp4Descriptor {
fn remote_directory_path(&self) -> &str {
MEDIA_FILE_DIRECTORY
}
fn get_suffix(&self) -> String {
"mp4".to_string()
}
fn get_prefix(&self) -> String {
"video".to_string()
}
fn is_public(&self) -> bool {
true
}
}
@@ -1,3 +1,4 @@
use crate::remote_file_manager::media_descriptor;
use crate::remote_file_manager::weights_descriptor::{self};
use super::file_descriptor::FileDescriptor;
@@ -28,6 +29,7 @@ impl RemoteCloudBucketDetails {
pub fn file_descriptor_from_bucket_details(&self) -> Box<dyn FileDescriptor> {
match self.prefix.as_str() {
// Weights
"loRA" => Box::new(weights_descriptor::WeightsLoRADescriptor {}),
"sd15" => Box::new(weights_descriptor::WeightsSD15Descriptor {}),
"sdxl" => Box::new(weights_descriptor::WeightsSDXLDescriptor {}),
@@ -41,6 +43,19 @@ impl RemoteCloudBucketDetails {
},
"svc" => Box::new(weights_descriptor::WeightsSVCDescriptor {}),
"workflow" => Box::new(weights_descriptor::WeightsWorkflowDescriptor {}),
// Media
"video" => {
match self.suffix.as_str() {
"mp4" => Box::new(media_descriptor::MediaVideoMp4Descriptor {}),
_ => panic!("Unknown suffix: {}",self.suffix)
}
},
"image" => {
match self.suffix.as_str() {
"png" => Box::new(media_descriptor::MediaImagePngDescriptor {}),
_ => panic!("Unknown suffix: {}",self.suffix)
}
},
_ => panic!("Unknown prefix: {}", self.prefix)
}
}
@@ -189,4 +189,4 @@ impl FileDescriptor for WeightsWorkflowDescriptor {
fn is_public(&self) -> bool {
true
}
}
}
@@ -1,4 +1,5 @@
use std::collections::HashMap;
use tokens::tokens::media_files::MediaFileToken;
use tokens::tokens::model_weights::ModelWeightToken;
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
@@ -27,4 +28,12 @@ pub struct WorkflowArgs {
#[serde(rename = "json_modifications")]
#[serde(skip_serializing_if = "Option::is_none")]
pub maybe_json_modifications: Option<HashMap<String, NewValue>>,
#[serde(rename = "in")]
#[serde(skip_serializing_if = "Option::is_none")]
pub maybe_input_file: Option<MediaFileToken>,
#[serde(rename = "out")]
#[serde(skip_serializing_if = "Option::is_none")]
pub maybe_output_path: Option<String>,
}
@@ -4,16 +4,18 @@ use anyhow::anyhow;
use mysql_queries::payloads::generic_inference_args::generic_inference_args::{InferenceCategoryAbbreviated, PolymorphicInferenceArgs};
use mysql_queries::payloads::generic_inference_args::workflow_payload::{NewValue};
use mysql_queries::queries::generic_inference::job::list_available_generic_inference_jobs::AvailableInferenceJob;
use tokens::tokens::media_files::MediaFileToken;
use tokens::tokens::model_weights::ModelWeightToken;
use crate::job::job_loop::process_single_job_error::ProcessSingleJobError;
pub struct JobArgs<'a> {
pub workflow_source: &'a ModelWeightToken,
pub output_path: &'a String,
pub maybe_json_modifications: &'a Option<HashMap<String, NewValue>>,
pub maybe_sd_model: &'a Option<ModelWeightToken>,
pub maybe_lora_model: &'a Option<ModelWeightToken>,
pub maybe_input_file: &'a Option<MediaFileToken>,
}
pub fn validate_job(job: &AvailableInferenceJob) -> Result<JobArgs, ProcessSingleJobError> {
@@ -58,11 +60,20 @@ pub fn validate_job(job: &AvailableInferenceJob) -> Result<JobArgs, ProcessSingl
}
};
let output_path = match &inference_args.maybe_output_path {
Some(args) => args,
None => {
return Err(ProcessSingleJobError::from_anyhow_error(anyhow!("No output file provided!")));
}
};
Ok(JobArgs {
workflow_source,
output_path,
maybe_sd_model: &inference_args.maybe_sd_model,
maybe_lora_model: &inference_args.maybe_lora_model,
maybe_json_modifications: &inference_args.maybe_json_modifications,
maybe_input_file: &inference_args.maybe_input_file,
})
}
@@ -19,6 +19,7 @@ use mysql_queries::payloads::generic_inference_args::generic_inference_args::{Ge
use mysql_queries::payloads::generic_inference_args::workflow_payload::{NewValue, WorkflowArgs};
use mysql_queries::queries::generic_inference::web::insert_generic_inference_job::{insert_generic_inference_job, InsertGenericInferenceArgs};
use tokens::tokens::generic_inference_jobs::InferenceJobToken;
use tokens::tokens::media_files::MediaFileToken;
use tokens::tokens::model_weights::ModelWeightToken;
use tokens::tokens::users::UserToken;
@@ -44,6 +45,8 @@ pub struct EnqueueComfyRequest {
maybe_negative_prompt: Option<String>,
maybe_json_modifications: Option<HashMap<String, NewValue>>,
maybe_workflow_config: Option<ModelWeightToken>,
maybe_input_file: Option<MediaFileToken>,
maybe_output_path: Option<String>,
creator_set_visibility: Option<Visibility>,
}
@@ -178,6 +181,8 @@ pub async fn enqueue_comfy_ui_handler(
maybe_lora_model: request.maybe_lora_model.clone(),
maybe_json_modifications: request.maybe_json_modifications.clone(),
maybe_workflow_config: request.maybe_workflow_config.clone(),
maybe_input_file: request.maybe_input_file.clone(),
maybe_output_path: request.maybe_output_path.clone(),
};
info!("Creating ComfyUI job record...");