diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/omni_gen_image_generate_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/omni_gen_image_generate_handler.rs index e2f0cc28d7..ececa4adb9 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/omni_gen_image_generate_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/omni_gen_image_generate_handler.rs @@ -31,7 +31,8 @@ use crate::http_server::endpoints::generate::common::payments_error_test::paymen use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; -use super::request_to_costs::estimate_costs; +use super::request_to_costs::request_to_costs; +use super::transform_request::transform_request; /// Generate an image using the omni-gen unified endpoint. #[utoipa::path( @@ -55,6 +56,14 @@ pub async fn omni_gen_image_generate_handler( payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; + // ==================== TRANSFORM REQUEST ==================== // + + let mut generate_request = transform_request(&request)?; + + // ==================== COST ==================== // + + let cost_estimate = request_to_costs(&mut generate_request)?; + // ==================== SESSION ==================== // let mut mysql_connection = server_state.mysql_pool.acquire().await?; @@ -94,9 +103,7 @@ pub async fn omni_gen_image_generate_handler( AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; - // ==================== COST + BILLING ==================== // - - let cost_estimate = estimate_costs(&request)?; + // ==================== BILLING ==================== // let cost = cost_estimate.cost_in_credits.unwrap_or(0); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/request_to_costs.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/request_to_costs.rs index 23559a49a8..f4a846a328 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/request_to_costs.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/request_to_costs.rs @@ -1,20 +1,17 @@ use artcraft_router::api::provider::Provider; +use artcraft_router::generate::generate_image::generate_image_request::GenerateImageRequest; use artcraft_router::generate::generate_image::image_generation_cost_estimate::ImageGenerationCostEstimate; use log::warn; use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; -use crate::http_server::endpoints::omni_gen::generate::image::transform_request::transform_request; - -use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_image_cost_and_generate_request::OmniGenImageCostAndGenerateRequest; /// Build the Artcraft-provider cost plan for this request. -pub fn estimate_costs( - request: &OmniGenImageCostAndGenerateRequest, +pub fn request_to_costs( + request: &mut GenerateImageRequest<'_>, ) -> Result { - let mut generate_request = transform_request(request)?; - generate_request.provider = Provider::Artcraft; + request.provider = Provider::Artcraft; - let plan = generate_request.build() + let plan = request.build() .map_err(|e| { warn!("Failed to build cost plan: {}", e); AdvancedCommonWebError::from_error(e) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/request_to_execution_plan.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/request_to_execution_plan.rs index e88ec358e7..ea2c4a6044 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/request_to_execution_plan.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/request_to_execution_plan.rs @@ -1,16 +1,13 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; -use crate::http_server::endpoints::omni_gen::generate::image::transform_request::transform_request; +use artcraft_router::generate::generate_image::generate_image_request::GenerateImageRequest; -use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_image_cost_and_generate_request::OmniGenImageCostAndGenerateRequest; +use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; /// Validate that an execution plan can be built for this request. /// Returns an error if the model/provider combination is unsupported. -pub fn validate_execution_plan( - request: &OmniGenImageCostAndGenerateRequest, +pub fn request_to_execution_plan( + request: &GenerateImageRequest<'_>, ) -> Result<(), AdvancedCommonWebError> { - let generate_request = transform_request(request)?; - - generate_request.build() + request.build() .map(|_| ()) .map_err(|e| AdvancedCommonWebError::BadInputWithSimpleMessage( format!("Failed to build execution plan: {}", e), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/omni_gen_video_generate_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/omni_gen_video_generate_handler.rs index e41909cc43..8911ce21ef 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/omni_gen_video_generate_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/omni_gen_video_generate_handler.rs @@ -31,7 +31,8 @@ use crate::http_server::endpoints::generate::common::payments_error_test::paymen use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; -use super::request_to_costs::estimate_costs; +use super::request_to_costs::request_to_costs; +use super::transform_request::transform_request; /// Generate a video using the omni-gen unified endpoint. #[utoipa::path( @@ -55,6 +56,14 @@ pub async fn omni_gen_video_generate_handler( payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; + // ==================== TRANSFORM REQUEST ==================== // + + let mut generate_request = transform_request(&request)?; + + // ==================== COST ==================== // + + let cost_estimate = request_to_costs(&mut generate_request)?; + // ==================== SESSION ==================== // let mut mysql_connection = server_state.mysql_pool.acquire().await?; @@ -94,9 +103,7 @@ pub async fn omni_gen_video_generate_handler( AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; - // ==================== COST + BILLING ==================== // - - let cost_estimate = estimate_costs(&request)?; + // ==================== BILLING ==================== // let cost = cost_estimate.cost_in_credits.unwrap_or(0); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/request_to_costs.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/request_to_costs.rs index 7c151b0d3a..4c069e1e56 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/request_to_costs.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/request_to_costs.rs @@ -1,20 +1,17 @@ use artcraft_router::api::provider::Provider; +use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; use artcraft_router::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate; use log::warn; use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; -use crate::http_server::endpoints::omni_gen::generate::video::transform_request::transform_request; - -use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost_and_generate_request::OmniGenVideoCostAndGenerateRequest; /// Build the Artcraft-provider cost plan for this request. -pub fn estimate_costs( - request: &OmniGenVideoCostAndGenerateRequest, +pub fn request_to_costs( + request: &mut GenerateVideoRequest<'_>, ) -> Result { - let mut generate_request = transform_request(request)?; - generate_request.provider = Provider::Artcraft; + request.provider = Provider::Artcraft; - let plan = generate_request.build() + let plan = request.build() .map_err(|e| { warn!("Failed to build cost plan: {}", e); AdvancedCommonWebError::from_error(e) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/request_to_execution_plan.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/request_to_execution_plan.rs index 48bf020d52..9c2372ba99 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/request_to_execution_plan.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/request_to_execution_plan.rs @@ -1,16 +1,13 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; -use crate::http_server::endpoints::omni_gen::generate::video::transform_request::transform_request; +use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; -use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost_and_generate_request::OmniGenVideoCostAndGenerateRequest; +use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; /// Validate that an execution plan can be built for this request. /// Returns an error if the model/provider combination is unsupported. -pub fn validate_execution_plan( - request: &OmniGenVideoCostAndGenerateRequest, +pub fn request_to_execution_plan( + request: &GenerateVideoRequest<'_>, ) -> Result<(), AdvancedCommonWebError> { - let generate_request = transform_request(request)?; - - generate_request.build() + request.build() .map(|_| ()) .map_err(|e| AdvancedCommonWebError::BadInputWithSimpleMessage( format!("Failed to build execution plan: {}", e),