save info from image prompts

This commit is contained in:
Brandon Thomas committed 2026-03-24 01:16:52 -04:00
1 parent ab2534169f
commit 794041d646
15 files changed
+311 -29

No files matched your search

@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,
@@ -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<u8> = 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,