From ea8a911ba34a89bab7adca02294e68063fcf9b2b Mon Sep 17 00:00:00 2001 From: arensc Date: Tue, 20 Feb 2024 21:08:01 -0500 Subject: [PATCH] Need to save prompt now --- .../job/job_types/workflow/comfy_ui/mod.rs | 3 +- .../workflow/comfy_ui/upload_prompt.rs | 64 +++++++++++++++++++ .../src/job/job_types/workflow/mod.rs | 2 +- 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 crates/service/job/inference_job/src/job/job_types/workflow/comfy_ui/upload_prompt.rs diff --git a/crates/service/job/inference_job/src/job/job_types/workflow/comfy_ui/mod.rs b/crates/service/job/inference_job/src/job/job_types/workflow/comfy_ui/mod.rs index 141ca8230a..865e5dfd79 100644 --- a/crates/service/job/inference_job/src/job/job_types/workflow/comfy_ui/mod.rs +++ b/crates/service/job/inference_job/src/job/job_types/workflow/comfy_ui/mod.rs @@ -3,4 +3,5 @@ mod categorize_error; mod comfy_ui_inference_command; pub(crate) mod comfy_ui_dependencies; pub(crate) mod process_job; -mod download_model_file; \ No newline at end of file +mod download_model_file; +mod upload_prompt; \ No newline at end of file diff --git a/crates/service/job/inference_job/src/job/job_types/workflow/comfy_ui/upload_prompt.rs b/crates/service/job/inference_job/src/job/job_types/workflow/comfy_ui/upload_prompt.rs new file mode 100644 index 0000000000..95092ee1e8 --- /dev/null +++ b/crates/service/job/inference_job/src/job/job_types/workflow/comfy_ui/upload_prompt.rs @@ -0,0 +1,64 @@ +use std::fs::{File, read_to_string}; +use std::path::{Path, PathBuf}; +use std::time::{Duration}; + +use anyhow::{anyhow, Result}; +use log::{debug, error, info, warn}; +use serde_json::Value; +use tokio::io::AsyncWriteExt; +use walkdir::WalkDir; + +use buckets::public::media_files::bucket_file_path::MediaFileBucketPath; +use cloud_storage::remote_file_manager::remote_cloud_bucket_details::RemoteCloudBucketDetails; +use cloud_storage::remote_file_manager::remote_cloud_file_manager::RemoteCloudFileClient; +use enums::by_table::generic_inference_jobs::inference_result_type::InferenceResultType; +use enums::by_table::media_files::media_file_type::MediaFileType; +use filesys::check_file_exists::check_file_exists; +use filesys::file_size::file_size; +use filesys::path_to_string::path_to_string; +use filesys::safe_delete_temp_directory::safe_delete_temp_directory; +use filesys::safe_delete_temp_file::safe_delete_temp_file; +use hashing::sha256::sha256_hash_file::sha256_hash_file; +use mimetypes::mimetype_for_file::get_mimetype_for_file; +use mysql_queries::payloads::generic_inference_args::generic_inference_args::PolymorphicInferenceArgs::Cu; +use mysql_queries::payloads::generic_inference_args::workflow_payload::NewValue; +use mysql_queries::queries::generic_inference::job::list_available_generic_inference_jobs::AvailableInferenceJob; +use mysql_queries::queries::media_files::create::insert_media_file_from_comfy_ui::{insert_media_file_from_comfy_ui, InsertArgs}; +use mysql_queries::queries::media_files::get_media_file::get_media_file; +use mysql_queries::queries::model_weights::get::get_weight::get_weight_by_token; +use thumbnail_generator::task_client::thumbnail_task::ThumbnailTaskBuilder; + +use crate::job::job_loop::job_success_result::{JobSuccessResult, ResultEntity}; +use crate::job::job_loop::process_single_job_error::ProcessSingleJobError; +use crate::job::job_types::workflow::comfy_ui::comfy_ui_inference_command::InferenceArgs; +use crate::job::job_types::workflow::comfy_ui::validate_job::validate_job; +use crate::job_dependencies::JobDependencies; + +fn get_file_extension(mimetype: &str) -> Result<&'static str> { + let ext = match mimetype { + "video/mp4" => "mp4", + "image/png" => "png", + "image/jpeg" => "jpg", + "image/gif" => "gif", + _ => return Err(anyhow!("Mimetype not supported: {}", mimetype)), + }; + Ok(ext) +} + +pub struct ComfyProcessJobArgs<'a> { + pub job_dependencies: &'a JobDependencies, + pub job: &'a AvailableInferenceJob, +} + +pub async fn upload_prompt(args: ComfyProcessJobArgs<'_>) -> Result { + let job = args.job; + let deps = args.job_dependencies; + + Ok(JobSuccessResult { + maybe_result_entity: Some(ResultEntity { + entity_type: InferenceResultType::UploadModel, + entity_token: "".to_string(), + }), + inference_duration: Duration::new(0, 0), + }) +} diff --git a/crates/service/job/inference_job/src/job/job_types/workflow/mod.rs b/crates/service/job/inference_job/src/job/job_types/workflow/mod.rs index ce4aaa0ddd..119133e60a 100644 --- a/crates/service/job/inference_job/src/job/job_types/workflow/mod.rs +++ b/crates/service/job/inference_job/src/job/job_types/workflow/mod.rs @@ -1,2 +1,2 @@ pub(crate) mod process_single_wf_job; -pub(crate) mod comfy_ui; \ No newline at end of file +pub(crate) mod comfy_ui;