From 794041d6464690aabec9d841c80fe2deffaa09d4 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 24 Mar 2026 01:16:52 -0400 Subject: [PATCH] save info from image prompts --- ...flux_pro_kontext_max_edit_image_handler.rs | 10 ++++- .../gemini_25_flash_edit_image_handler.rs | 10 ++++- .../edit/gpt_image_1_edit_image_handler.rs | 20 +++++++++- .../image/edit/qwen_edit_image_handler.rs | 10 ++++- ...eam_v4_multi_function_image_gen_handler.rs | 26 ++++++++++++- ...m_v4p5_multi_function_image_gen_handler.rs | 25 +++++++++++- ...ge_1p5_multi_function_image_gen_handler.rs | 20 +++++++++- ...nana_2_multi_function_image_gen_handler.rs | 39 +++++++++++++++++-- ...banana_multi_function_image_gen_handler.rs | 28 ++++++++++++- ...na_pro_multi_function_image_gen_handler.rs | 38 ++++++++++++++++-- ...nerate_flux_1_dev_text_to_image_handler.rs | 23 ++++++++++- ...te_flux_1_schnell_text_to_image_handler.rs | 23 ++++++++++- ...erate_flux_pro_11_text_to_image_handler.rs | 22 ++++++++++- ...flux_pro_11_ultra_text_to_image_handler.rs | 26 ++++++++++++- ...erate_gpt_image_1_text_to_image_handler.rs | 20 +++++++++- 15 files changed, 311 insertions(+), 29 deletions(-) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/flux_pro_kontext_max_edit_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/flux_pro_kontext_max_edit_image_handler.rs index 0681d1feac..ef63b5dadc 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/flux_pro_kontext_max_edit_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/flux_pro_kontext_max_edit_image_handler.rs @@ -208,6 +208,14 @@ pub async fn flux_pro_kontext_max_edit_image_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_batch_count: Option = match request.num_images { + Some(FluxProKontextMaxEditImageNumImages::One) => Some(1), + Some(FluxProKontextMaxEditImageNumImages::Two) => Some(2), + Some(FluxProKontextMaxEditImageNumImages::Three) => Some(3), + Some(FluxProKontextMaxEditImageNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -222,7 +230,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( maybe_generation_mode: Some(CommonGenerationMode::Edit), // TODO: This endpoint only supports "edit" (and not "text") for now maybe_aspect_ratio: None, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gemini_25_flash_edit_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gemini_25_flash_edit_image_handler.rs index a8c92c0697..47e886a02f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gemini_25_flash_edit_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gemini_25_flash_edit_image_handler.rs @@ -227,6 +227,14 @@ pub async fn gemini_25_flash_edit_image_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_batch_count: Option = match request.num_images { + Some(Gemini25FlashEditImageNumImages::One) => Some(1), + Some(Gemini25FlashEditImageNumImages::Two) => Some(2), + Some(Gemini25FlashEditImageNumImages::Three) => Some(3), + Some(Gemini25FlashEditImageNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -239,7 +247,7 @@ pub async fn gemini_25_flash_edit_image_handler( maybe_generation_mode: Some(CommonGenerationMode::Edit), // TODO: This endpoint only supports "edit" (and not "text") for now maybe_aspect_ratio: None, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gpt_image_1_edit_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gpt_image_1_edit_image_handler.rs index c8590f6d9f..89f724fa3b 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gpt_image_1_edit_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gpt_image_1_edit_image_handler.rs @@ -19,6 +19,7 @@ use enums::common::payments_namespace::PaymentsNamespace; use enums::common::stripe_subscription_status::StripeSubscriptionStatus; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::creds::open_ai_api_key::OpenAiApiKey; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::edit::enqueue_gpt_image_1_edit_image_webhook::enqueue_gpt_image_1_edit_image_webhook; @@ -249,6 +250,21 @@ pub async fn gpt_image_1_edit_image_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.image_size { + Some(GptImage1EditImageImageSize::Square) => Some(CommonAspectRatio::Square), + Some(GptImage1EditImageImageSize::Horizontal) => Some(CommonAspectRatio::WideSixteenByNine), + Some(GptImage1EditImageImageSize::Vertical) => Some(CommonAspectRatio::TallNineBySixteen), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(GptImage1EditImageNumImages::One) => Some(1), + Some(GptImage1EditImageNumImages::Two) => Some(2), + Some(GptImage1EditImageNumImages::Three) => Some(3), + Some(GptImage1EditImageNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -259,9 +275,9 @@ pub async fn gpt_image_1_edit_image_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(CommonGenerationMode::Edit), // TODO: This endpoint only supports "edit" (and not "text") for now - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/qwen_edit_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/qwen_edit_image_handler.rs index a8f3b6cd35..88b7150f3d 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/qwen_edit_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/qwen_edit_image_handler.rs @@ -201,6 +201,14 @@ pub async fn qwen_edit_image_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_batch_count: Option = match request.num_images { + Some(QwenEditImageNumImages::One) => Some(1), + Some(QwenEditImageNumImages::Two) => Some(2), + Some(QwenEditImageNumImages::Three) => Some(3), + Some(QwenEditImageNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -213,7 +221,7 @@ pub async fn qwen_edit_image_handler( maybe_generation_mode: Some(CommonGenerationMode::Edit), // TODO: This endpoint only supports "edit" (and not "text") for now maybe_aspect_ratio: None, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4_multi_function_image_gen_handler.rs index ae30c3d8f8..da63647f27 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4_multi_function_image_gen_handler.rs @@ -20,6 +20,7 @@ use enums::common::generation_provider::GenerationProvider; use enums::common::generation::common_model_type::CommonModelType; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::creds::open_ai_api_key::OpenAiApiKey; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::edit::enqueue_bytedance_seedream_v4_edit_image_webhook::{enqueue_bytedance_seedream_v4_edit_image_webhook, EnqueueBytedanceSeedreamV4EditImageArgs, EnqueueBytedanceSeedreamV4EditImageNumImages, EnqueueBytedanceSeedreamV4EditImageSize}; @@ -249,6 +250,27 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.image_size { + Some(BytedanceSeedreamV4MultiFunctionImageGenImageSize::Square) => Some(CommonAspectRatio::Square), + Some(BytedanceSeedreamV4MultiFunctionImageGenImageSize::SquareHd) => Some(CommonAspectRatio::SquareHd), + Some(BytedanceSeedreamV4MultiFunctionImageGenImageSize::PortraitFourThree) => Some(CommonAspectRatio::TallThreeByFour), + Some(BytedanceSeedreamV4MultiFunctionImageGenImageSize::PortraitSixteenNine) => Some(CommonAspectRatio::TallNineBySixteen), + Some(BytedanceSeedreamV4MultiFunctionImageGenImageSize::LandscapeFourThree) => Some(CommonAspectRatio::WideFourByThree), + Some(BytedanceSeedreamV4MultiFunctionImageGenImageSize::LandscapeSixteenNine) => Some(CommonAspectRatio::WideSixteenByNine), + Some(BytedanceSeedreamV4MultiFunctionImageGenImageSize::Auto) => Some(CommonAspectRatio::Auto), + Some(BytedanceSeedreamV4MultiFunctionImageGenImageSize::Auto2k) => Some(CommonAspectRatio::Auto2k), + Some(BytedanceSeedreamV4MultiFunctionImageGenImageSize::Auto4k) => Some(CommonAspectRatio::Auto4k), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(BytedanceSeedreamV4MultiFunctionImageGenNumImages::One) => Some(1), + Some(BytedanceSeedreamV4MultiFunctionImageGenNumImages::Two) => Some(2), + Some(BytedanceSeedreamV4MultiFunctionImageGenNumImages::Three) => Some(3), + Some(BytedanceSeedreamV4MultiFunctionImageGenNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -259,9 +281,9 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(generation_mode), - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4p5_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4p5_multi_function_image_gen_handler.rs index 1f5f7906c4..951f5228a2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4p5_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4p5_multi_function_image_gen_handler.rs @@ -20,6 +20,7 @@ use enums::common::generation_provider::GenerationProvider; use enums::common::generation::common_model_type::CommonModelType; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::creds::open_ai_api_key::OpenAiApiKey; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::edit::enqueue_bytedance_seedream_v4p5_edit_image_webhook::{enqueue_bytedance_seedream_v4p5_edit_image_webhook, EnqueueBytedanceSeedreamV4p5EditImageArgs, EnqueueBytedanceSeedreamV4p5EditImageNumImages, EnqueueBytedanceSeedreamV4p5EditImageSize}; @@ -247,6 +248,26 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.image_size { + Some(BytedanceSeedreamV4p5MultiFunctionImageGenImageSize::Square) => Some(CommonAspectRatio::Square), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenImageSize::SquareHd) => Some(CommonAspectRatio::SquareHd), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenImageSize::PortraitFourThree) => Some(CommonAspectRatio::TallThreeByFour), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenImageSize::PortraitSixteenNine) => Some(CommonAspectRatio::TallNineBySixteen), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenImageSize::LandscapeFourThree) => Some(CommonAspectRatio::WideFourByThree), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenImageSize::LandscapeSixteenNine) => Some(CommonAspectRatio::WideSixteenByNine), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenImageSize::Auto2k) => Some(CommonAspectRatio::Auto2k), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenImageSize::Auto4k) => Some(CommonAspectRatio::Auto4k), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(BytedanceSeedreamV4p5MultiFunctionImageGenNumImages::One) => Some(1), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenNumImages::Two) => Some(2), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenNumImages::Three) => Some(3), + Some(BytedanceSeedreamV4p5MultiFunctionImageGenNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -257,9 +278,9 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(generation_mode), - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/gpt_image_1p5_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/gpt_image_1p5_multi_function_image_gen_handler.rs index 1bd882dc7c..0bbb934d11 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/gpt_image_1p5_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/gpt_image_1p5_multi_function_image_gen_handler.rs @@ -22,6 +22,7 @@ use enums::common::payments_namespace::PaymentsNamespace; use enums::common::stripe_subscription_status::StripeSubscriptionStatus; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::creds::open_ai_api_key::OpenAiApiKey; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::edit::enqueue_gpt_image_1p5_edit_image_webhook::{enqueue_gpt_image_1p5_image_edit_webhook, EnqueueGptImage1p5EditImageArgs, EnqueueGptImage1p5EditImageBackground, EnqueueGptImage1p5EditImageInputFidelity, EnqueueGptImage1p5EditImageNumImages, EnqueueGptImage1p5EditImageQuality, EnqueueGptImage1p5EditImageSize}; @@ -337,6 +338,21 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.image_size { + Some(GptImage1p5MultiFunctionImageGenSize::Square) => Some(CommonAspectRatio::Square), + Some(GptImage1p5MultiFunctionImageGenSize::Wide) => Some(CommonAspectRatio::WideSixteenByNine), + Some(GptImage1p5MultiFunctionImageGenSize::Tall) => Some(CommonAspectRatio::TallNineBySixteen), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(GptImage1p5MultiFunctionImageGenNumImages::One) => Some(1), + Some(GptImage1p5MultiFunctionImageGenNumImages::Two) => Some(2), + Some(GptImage1p5MultiFunctionImageGenNumImages::Three) => Some(3), + Some(GptImage1p5MultiFunctionImageGenNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -347,9 +363,9 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(generation_mode), - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_2_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_2_multi_function_image_gen_handler.rs index b81ca46dc8..538cf2880d 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_2_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_2_multi_function_image_gen_handler.rs @@ -15,6 +15,8 @@ use enums::common::generation_provider::GenerationProvider; use enums::common::generation::common_model_type::CommonModelType; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; +use enums::common::generation::common_resolution::CommonResolution; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::edit::enqueue_nano_banana_2_edit_image_webhook::{enqueue_nano_banana_2_edit_image_webhook, EnqueueNanoBanana2EditImageArgs, EnqueueNanoBanana2EditImageAspectRatio, EnqueueNanoBanana2EditImageNumImages, EnqueueNanoBanana2EditImageResolution}; use fal_client::requests::webhook::image::text::enqueue_nano_banana_2_text_to_image_webhook::{enqueue_nano_banana_2_text_to_image_webhook, EnqueueNanoBanana2TextToImageArgs, EnqueueNanoBanana2TextToImageAspectRatio, EnqueueNanoBanana2TextToImageNumImages, EnqueueNanoBanana2TextToImageResolution}; @@ -248,6 +250,37 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( CommonWebError::ServerError })?; + let maybe_aspect_ratio = match request.aspect_ratio { + Some(NanaBanana2MultiFunctionImageGenAspectRatio::Auto) => Some(CommonAspectRatio::Auto), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::OneByOne) => Some(CommonAspectRatio::Square), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::FiveByFour) => Some(CommonAspectRatio::WideFiveByFour), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::FourByThree) => Some(CommonAspectRatio::WideFourByThree), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::ThreeByTwo) => Some(CommonAspectRatio::WideThreeByTwo), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::SixteenByNine) => Some(CommonAspectRatio::WideSixteenByNine), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::TwentyOneByNine) => Some(CommonAspectRatio::WideTwentyOneByNine), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::FourByFive) => Some(CommonAspectRatio::TallFourByFive), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::ThreeByFour) => Some(CommonAspectRatio::TallThreeByFour), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::TwoByThree) => Some(CommonAspectRatio::TallTwoByThree), + Some(NanaBanana2MultiFunctionImageGenAspectRatio::NineBySixteen) => Some(CommonAspectRatio::TallNineBySixteen), + None => None, + }; + + let maybe_resolution = match request.resolution { + Some(NanaBanana2MultiFunctionImageGenImageResolution::HalfK) => None, + Some(NanaBanana2MultiFunctionImageGenImageResolution::OneK) => Some(CommonResolution::OneK), + Some(NanaBanana2MultiFunctionImageGenImageResolution::TwoK) => Some(CommonResolution::TwoK), + Some(NanaBanana2MultiFunctionImageGenImageResolution::FourK) => Some(CommonResolution::FourK), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(NanaBanana2MultiFunctionImageGenNumImages::One) => Some(1), + Some(NanaBanana2MultiFunctionImageGenNumImages::Two) => Some(2), + Some(NanaBanana2MultiFunctionImageGenNumImages::Three) => Some(3), + Some(NanaBanana2MultiFunctionImageGenNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -258,9 +291,9 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(generation_mode), - maybe_aspect_ratio: None, - maybe_resolution: None, - maybe_batch_count: None, + maybe_aspect_ratio, + maybe_resolution, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_multi_function_image_gen_handler.rs index 31b7a10a05..4c79bb1d30 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_multi_function_image_gen_handler.rs @@ -23,6 +23,7 @@ use enums::common::payments_namespace::PaymentsNamespace; use enums::common::stripe_subscription_status::StripeSubscriptionStatus; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::creds::open_ai_api_key::OpenAiApiKey; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::edit::enqueue_gemini_25_flash_edit_webhook::{enqueue_gemini_25_flash_edit_webhook, Gemini25FlashEditArgs, Gemini25FlashEditAspectRatio, Gemini25FlashEditNumImages}; @@ -280,6 +281,29 @@ pub async fn nano_banana_multi_function_image_gen_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.aspect_ratio { + Some(NanoBananaMultiFunctionImageGenAspectRatio::Auto) => Some(CommonAspectRatio::Auto), + Some(NanoBananaMultiFunctionImageGenAspectRatio::OneByOne) => Some(CommonAspectRatio::Square), + Some(NanoBananaMultiFunctionImageGenAspectRatio::FiveByFour) => Some(CommonAspectRatio::WideFiveByFour), + Some(NanoBananaMultiFunctionImageGenAspectRatio::FourByThree) => Some(CommonAspectRatio::WideFourByThree), + Some(NanoBananaMultiFunctionImageGenAspectRatio::ThreeByTwo) => Some(CommonAspectRatio::WideThreeByTwo), + Some(NanoBananaMultiFunctionImageGenAspectRatio::SixteenByNine) => Some(CommonAspectRatio::WideSixteenByNine), + Some(NanoBananaMultiFunctionImageGenAspectRatio::TwentyOneByNine) => Some(CommonAspectRatio::WideTwentyOneByNine), + Some(NanoBananaMultiFunctionImageGenAspectRatio::FourByFive) => Some(CommonAspectRatio::TallFourByFive), + Some(NanoBananaMultiFunctionImageGenAspectRatio::ThreeByFour) => Some(CommonAspectRatio::TallThreeByFour), + Some(NanoBananaMultiFunctionImageGenAspectRatio::TwoByThree) => Some(CommonAspectRatio::TallTwoByThree), + Some(NanoBananaMultiFunctionImageGenAspectRatio::NineBySixteen) => Some(CommonAspectRatio::TallNineBySixteen), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(NanoBananaMultiFunctionImageGenNumImages::One) => Some(1), + Some(NanoBananaMultiFunctionImageGenNumImages::Two) => Some(2), + Some(NanoBananaMultiFunctionImageGenNumImages::Three) => Some(3), + Some(NanoBananaMultiFunctionImageGenNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -290,9 +314,9 @@ pub async fn nano_banana_multi_function_image_gen_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(generation_mode), - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_pro_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_pro_multi_function_image_gen_handler.rs index 8ae805cba1..c61c339f1f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_pro_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_pro_multi_function_image_gen_handler.rs @@ -22,6 +22,8 @@ use enums::common::payments_namespace::PaymentsNamespace; use enums::common::stripe_subscription_status::StripeSubscriptionStatus; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; +use enums::common::generation::common_resolution::CommonResolution; use fal_client::creds::open_ai_api_key::OpenAiApiKey; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::edit::enqueue_nano_banana_pro_edit_image_webhook::{enqueue_nano_banana_pro_image_edit_webhook, EnqueueNanoBananaProEditImageArgs, EnqueueNanoBananaProEditImageAspectRatio, EnqueueNanoBananaProEditImageNumImages, EnqueueNanoBananaProEditImageResolution}; @@ -295,6 +297,36 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.aspect_ratio { + Some(NanoBananaProMultiFunctionImageGenAspectRatio::Auto) => Some(CommonAspectRatio::Auto), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::OneByOne) => Some(CommonAspectRatio::Square), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::FiveByFour) => Some(CommonAspectRatio::WideFiveByFour), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::FourByThree) => Some(CommonAspectRatio::WideFourByThree), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::ThreeByTwo) => Some(CommonAspectRatio::WideThreeByTwo), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::SixteenByNine) => Some(CommonAspectRatio::WideSixteenByNine), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::TwentyOneByNine) => Some(CommonAspectRatio::WideTwentyOneByNine), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::FourByFive) => Some(CommonAspectRatio::TallFourByFive), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::ThreeByFour) => Some(CommonAspectRatio::TallThreeByFour), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::TwoByThree) => Some(CommonAspectRatio::TallTwoByThree), + Some(NanoBananaProMultiFunctionImageGenAspectRatio::NineBySixteen) => Some(CommonAspectRatio::TallNineBySixteen), + None => None, + }; + + let maybe_resolution = match request.resolution { + Some(NanoBananaProMultiFunctionImageGenImageResolution::OneK) => Some(CommonResolution::OneK), + Some(NanoBananaProMultiFunctionImageGenImageResolution::TwoK) => Some(CommonResolution::TwoK), + Some(NanoBananaProMultiFunctionImageGenImageResolution::FourK) => Some(CommonResolution::FourK), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(NanoBananaProMultiFunctionImageGenNumImages::One) => Some(1), + Some(NanoBananaProMultiFunctionImageGenNumImages::Two) => Some(2), + Some(NanoBananaProMultiFunctionImageGenNumImages::Three) => Some(3), + Some(NanoBananaProMultiFunctionImageGenNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -305,9 +337,9 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(generation_mode), - maybe_aspect_ratio: None, - maybe_resolution: None, - maybe_batch_count: None, + maybe_aspect_ratio, + maybe_resolution, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_dev_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_dev_text_to_image_handler.rs index af50ad6b47..b61c6f1208 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_dev_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_dev_text_to_image_handler.rs @@ -16,6 +16,7 @@ use enums::common::generation_provider::GenerationProvider; use enums::common::generation::common_model_type::CommonModelType; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::requests::webhook::image::text::enqueue_flux_1_dev_text_to_image_webhook::enqueue_flux_1_dev_text_to_image_webhook; use fal_client::requests::webhook::image::text::enqueue_flux_1_dev_text_to_image_webhook::{Flux1DevArgs, Flux1DevAspectRatio, Flux1DevNumImages}; use http_server_common::request::get_request_ip::get_request_ip; @@ -188,6 +189,24 @@ pub async fn generate_flux_1_dev_text_to_image_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.aspect_ratio { + Some(GenerateFlux1DevTextToImageAspectRatio::Square) => Some(CommonAspectRatio::Square), + Some(GenerateFlux1DevTextToImageAspectRatio::SquareHd) => Some(CommonAspectRatio::SquareHd), + Some(GenerateFlux1DevTextToImageAspectRatio::LandscapeFourByThree) => Some(CommonAspectRatio::WideFourByThree), + Some(GenerateFlux1DevTextToImageAspectRatio::LandscapeSixteenByNine) => Some(CommonAspectRatio::WideSixteenByNine), + Some(GenerateFlux1DevTextToImageAspectRatio::PortraitThreeByFour) => Some(CommonAspectRatio::TallThreeByFour), + Some(GenerateFlux1DevTextToImageAspectRatio::PortraitNineBySixteen) => Some(CommonAspectRatio::TallNineBySixteen), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(GenerateFlux1DevTextToImageNumImages::One) => Some(1), + Some(GenerateFlux1DevTextToImageNumImages::Two) => Some(2), + Some(GenerateFlux1DevTextToImageNumImages::Three) => Some(3), + Some(GenerateFlux1DevTextToImageNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -200,9 +219,9 @@ pub async fn generate_flux_1_dev_text_to_image_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(CommonGenerationMode::Text), - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_schnell_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_schnell_text_to_image_handler.rs index fd03377170..5aca251637 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_schnell_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_schnell_text_to_image_handler.rs @@ -13,6 +13,7 @@ use enums::common::generation_provider::GenerationProvider; use enums::common::generation::common_model_type::CommonModelType; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::requests::webhook::image::text::enqueue_flux_1_schnell_text_to_image_webhook::enqueue_flux_1_schnell_text_to_image_webhook; use fal_client::requests::webhook::image::text::enqueue_flux_1_schnell_text_to_image_webhook::{Flux1SchnellArgs, Flux1SchnellAspectRatio, Flux1SchnellNumImages}; use http_server_common::request::get_request_ip::get_request_ip; @@ -168,6 +169,24 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.aspect_ratio { + Some(GenerateFlux1SchnellTextToImageAspectRatio::Square) => Some(CommonAspectRatio::Square), + Some(GenerateFlux1SchnellTextToImageAspectRatio::SquareHd) => Some(CommonAspectRatio::SquareHd), + Some(GenerateFlux1SchnellTextToImageAspectRatio::LandscapeFourByThree) => Some(CommonAspectRatio::WideFourByThree), + Some(GenerateFlux1SchnellTextToImageAspectRatio::LandscapeSixteenByNine) => Some(CommonAspectRatio::WideSixteenByNine), + Some(GenerateFlux1SchnellTextToImageAspectRatio::PortraitThreeByFour) => Some(CommonAspectRatio::TallThreeByFour), + Some(GenerateFlux1SchnellTextToImageAspectRatio::PortraitNineBySixteen) => Some(CommonAspectRatio::TallNineBySixteen), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(GenerateFlux1SchnellTextToImageNumImages::One) => Some(1), + Some(GenerateFlux1SchnellTextToImageNumImages::Two) => Some(2), + Some(GenerateFlux1SchnellTextToImageNumImages::Three) => Some(3), + Some(GenerateFlux1SchnellTextToImageNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -180,9 +199,9 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(CommonGenerationMode::Text), // TODO: This endpoint only supports "text" for now - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_text_to_image_handler.rs index 7c36b2e989..353b059b50 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_text_to_image_handler.rs @@ -16,6 +16,7 @@ use enums::common::generation_provider::GenerationProvider; use enums::common::generation::common_model_type::CommonModelType; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::text::enqueue_flux_pro_11_text_to_image_webhook::FluxPro11Args; use fal_client::requests::webhook::image::text::enqueue_flux_pro_11_text_to_image_webhook::{enqueue_flux_pro_11_text_to_image_webhook, FluxPro11AspectRatio, FluxPro11NumImages}; @@ -154,6 +155,23 @@ pub async fn generate_flux_pro_11_text_to_image_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.aspect_ratio { + Some(GenerateFluxPro11TextToImageAspectRatio::Square) => Some(CommonAspectRatio::Square), + Some(GenerateFluxPro11TextToImageAspectRatio::LandscapeFourByThree) => Some(CommonAspectRatio::WideFourByThree), + Some(GenerateFluxPro11TextToImageAspectRatio::LandscapeSixteenByNine) => Some(CommonAspectRatio::WideSixteenByNine), + Some(GenerateFluxPro11TextToImageAspectRatio::PortraitThreeByFour) => Some(CommonAspectRatio::TallThreeByFour), + Some(GenerateFluxPro11TextToImageAspectRatio::PortraitNineBySixteen) => Some(CommonAspectRatio::TallNineBySixteen), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(GenerateFluxPro11TextToImageNumImages::One) => Some(1), + Some(GenerateFluxPro11TextToImageNumImages::Two) => Some(2), + Some(GenerateFluxPro11TextToImageNumImages::Three) => Some(3), + Some(GenerateFluxPro11TextToImageNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -164,9 +182,9 @@ pub async fn generate_flux_pro_11_text_to_image_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(CommonGenerationMode::Text), // TODO: This endpoint only supports "text" for now - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_ultra_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_ultra_text_to_image_handler.rs index acd6bc927c..b8922534f2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_ultra_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_ultra_text_to_image_handler.rs @@ -16,6 +16,7 @@ use enums::common::generation_provider::GenerationProvider; use enums::common::generation::common_model_type::CommonModelType; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::text::enqueue_flux_pro_11_ultra_text_to_image_webhook::FluxPro11UltraArgs; use fal_client::requests::webhook::image::text::enqueue_flux_pro_11_ultra_text_to_image_webhook::{enqueue_flux_pro_11_ultra_text_to_image_webhook, FluxPro11UltraAspectRatio, FluxPro11UltraNumImages}; @@ -158,6 +159,27 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.aspect_ratio { + Some(GenerateFluxPro11UltraTextToImageAspectRatio::Square) => Some(CommonAspectRatio::Square), + Some(GenerateFluxPro11UltraTextToImageAspectRatio::LandscapeThreeByTwo) => Some(CommonAspectRatio::WideThreeByTwo), + Some(GenerateFluxPro11UltraTextToImageAspectRatio::LandscapeFourByThree) => Some(CommonAspectRatio::WideFourByThree), + Some(GenerateFluxPro11UltraTextToImageAspectRatio::LandscapeSixteenByNine) => Some(CommonAspectRatio::WideSixteenByNine), + Some(GenerateFluxPro11UltraTextToImageAspectRatio::LandscapeTwentyOneByNine) => Some(CommonAspectRatio::WideTwentyOneByNine), + Some(GenerateFluxPro11UltraTextToImageAspectRatio::PortraitTwoByThree) => Some(CommonAspectRatio::TallTwoByThree), + Some(GenerateFluxPro11UltraTextToImageAspectRatio::PortraitThreeByFour) => Some(CommonAspectRatio::TallThreeByFour), + Some(GenerateFluxPro11UltraTextToImageAspectRatio::PortraitNineBySixteen) => Some(CommonAspectRatio::TallNineBySixteen), + Some(GenerateFluxPro11UltraTextToImageAspectRatio::PortraitNineByTwentyOne) => Some(CommonAspectRatio::TallNineByTwentyOne), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(GenerateFluxPro11UltraTextToImageNumImages::One) => Some(1), + Some(GenerateFluxPro11UltraTextToImageNumImages::Two) => Some(2), + Some(GenerateFluxPro11UltraTextToImageNumImages::Three) => Some(3), + Some(GenerateFluxPro11UltraTextToImageNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -168,9 +190,9 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(CommonGenerationMode::Text), // TODO: This endpoint only supports "text" for now - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_gpt_image_1_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_gpt_image_1_text_to_image_handler.rs index 793c1cb5b4..a16af7d787 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_gpt_image_1_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_gpt_image_1_text_to_image_handler.rs @@ -18,6 +18,7 @@ use enums::common::payments_namespace::PaymentsNamespace; use enums::common::stripe_subscription_status::StripeSubscriptionStatus; use enums::common::visibility::Visibility; use enums::common::generation::common_generation_mode::CommonGenerationMode; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use fal_client::creds::open_ai_api_key::OpenAiApiKey; use fal_client::requests::traits::fal_request_cost_calculator_trait::FalRequestCostCalculator; use fal_client::requests::webhook::image::text::enqueue_gpt_image_1_text_to_image_webhook::{enqueue_gpt_image_1_text_to_image_webhook, GptTextToImageByokArgs, GptTextToImageNumImages, GptTextToImageQuality, GptTextToImageSize}; @@ -200,6 +201,21 @@ pub async fn generate_gpt_image_1_text_to_image_handler( })?; // NB: Don't fail the job if the query fails. + let maybe_aspect_ratio = match request.image_size { + Some(GenerateGptImage1TextToImageImageSize::Square) => Some(CommonAspectRatio::Square), + Some(GenerateGptImage1TextToImageImageSize::Horizontal) => Some(CommonAspectRatio::WideSixteenByNine), + Some(GenerateGptImage1TextToImageImageSize::Vertical) => Some(CommonAspectRatio::TallNineBySixteen), + None => None, + }; + + let maybe_batch_count: Option = match request.num_images { + Some(GenerateGptImage1TextToImageNumImages::One) => Some(1), + Some(GenerateGptImage1TextToImageNumImages::Two) => Some(2), + Some(GenerateGptImage1TextToImageNumImages::Three) => Some(3), + Some(GenerateGptImage1TextToImageNumImages::Four) => Some(4), + None => None, + }; + let prompt_result = insert_prompt(InsertPromptArgs { maybe_apriori_prompt_token: None, prompt_type: PromptType::ArtcraftApp, @@ -210,9 +226,9 @@ pub async fn generate_gpt_image_1_text_to_image_handler( maybe_negative_prompt: None, maybe_other_args: None, maybe_generation_mode: Some(CommonGenerationMode::Text), // TODO: This endpoint only supports "text" for now - maybe_aspect_ratio: None, + maybe_aspect_ratio, maybe_resolution: None, - maybe_batch_count: None, + maybe_batch_count, maybe_generate_audio: None, creator_ip_address: &ip_address, mysql_executor: &mut *transaction,