diff --git a/crates/schema/database/mysql_queries/src/queries/generic_inference/fal/get_inference_job_by_fal_id.rs b/crates/schema/database/mysql_queries/src/queries/generic_inference/fal/get_inference_job_by_fal_id.rs index f71b9dc9c2..9203d30032 100644 --- a/crates/schema/database/mysql_queries/src/queries/generic_inference/fal/get_inference_job_by_fal_id.rs +++ b/crates/schema/database/mysql_queries/src/queries/generic_inference/fal/get_inference_job_by_fal_id.rs @@ -13,6 +13,7 @@ use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use errors::AnyhowResult; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::prompts::PromptToken; use tokens::tokens::users::UserToken; use crate::helpers::boolean_converters::i8_to_bool; @@ -30,11 +31,35 @@ pub struct FalJobDetails { pub maybe_creator_user_token: Option, pub maybe_creator_anonymous_visitor_token: Option, pub creator_ip_address: String, + + pub maybe_prompt_token: Option, pub created_at: DateTime, pub updated_at: DateTime, } +#[derive(Debug, Default)] +struct RawJobRecord { + job_token: InferenceJobToken, + + status: JobStatusPlus, + + // NB: Nullable, but required to be filled for this query + external_third_party: Option, + + // NB: Nullable, but required to be filled for this query + external_third_party_id: Option, + + maybe_creator_user_token: Option, + maybe_creator_anonymous_visitor_token: Option, + creator_ip_address: String, + + maybe_prompt_token: Option, + + created_at: DateTime, + updated_at: DateTime, +} + /// Returns Ok(None) when the record cannot be found. pub async fn get_inference_job_by_fal_id(fal_id: &str, mysql_pool: &MySqlPool) -> AnyhowResult> @@ -66,6 +91,8 @@ SELECT jobs.maybe_creator_user_token as `maybe_creator_user_token: tokens::tokens::users::UserToken`, jobs.maybe_creator_anonymous_visitor_token as `maybe_creator_anonymous_visitor_token: tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken`, jobs.creator_ip_address, + + jobs.maybe_prompt_token as `maybe_prompt_token: tokens::tokens::prompts::PromptToken`, jobs.created_at, jobs.updated_at @@ -106,28 +133,8 @@ fn raw_record_to_public_result(record: RawJobRecord) -> AnyhowResult, - - // NB: Nullable, but required to be filled for this query - pub external_third_party_id: Option, - - pub maybe_creator_user_token: Option, - pub maybe_creator_anonymous_visitor_token: Option, - pub creator_ip_address: String, - - pub created_at: DateTime, - pub updated_at: DateTime, -} - diff --git a/crates/schema/database/mysql_queries/src/queries/media_files/create/insert_builder/media_file_insert_builder.rs b/crates/schema/database/mysql_queries/src/queries/media_files/create/insert_builder/media_file_insert_builder.rs index a156b95d67..98b4cc4a53 100644 --- a/crates/schema/database/mysql_queries/src/queries/media_files/create/insert_builder/media_file_insert_builder.rs +++ b/crates/schema/database/mysql_queries/src/queries/media_files/create/insert_builder/media_file_insert_builder.rs @@ -1,19 +1,18 @@ use crate::queries::media_files::create::generic_insert::insert_media_file_generic::{insert_media_file_generic, InsertArgs}; -use anyhow::anyhow; +use crate::queries::media_files::create::insert_builder::media_file_insert_builder_error::MediaFileInsertBuilderError; use bucket_paths::legacy::typified_paths::public::media_files::bucket_file_path::MediaFileBucketPath; use enums::by_table::generic_synthetic_ids::id_category::IdCategory; use enums::by_table::media_files::media_file_class::MediaFileClass; +use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; use enums::by_table::media_files::media_file_origin_category::MediaFileOriginCategory; use enums::by_table::media_files::media_file_origin_product_category::MediaFileOriginProductCategory; use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::visibility::Visibility; -use errors::AnyhowResult; use sqlx::MySqlPool; -use enums::by_table::media_files::media_file_engine_category::MediaFileEngineCategory; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; use tokens::tokens::media_files::MediaFileToken; +use tokens::tokens::prompts::PromptToken; use tokens::tokens::users::UserToken; -use crate::queries::media_files::create::insert_builder::media_file_insert_builder_error::MediaFileInsertBuilderError; /// Builder for inserting a media files into the database. /// Resembles an ORM, but can still use statically type checked queries (which is probably @@ -53,7 +52,9 @@ pub struct MediaFileInsertBuilder { checksum_sha2: Option, // NB: Non-nullable field // Media info for certain product areas - pub maybe_engine_category: Option, // TODO: Deprecate + maybe_engine_category: Option, // TODO: Deprecate + + maybe_prompt_token: Option, // // User text information // maybe_title: Option<&'a str>, @@ -100,6 +101,7 @@ impl MediaFileInsertBuilder { checksum_sha2: None, maybe_engine_category: None, public_bucket_directory_hash: None, + maybe_prompt_token: None, } } @@ -165,6 +167,11 @@ impl MediaFileInsertBuilder { self } + pub fn maybe_prompt_token(mut self, maybe_prompt_token: Option<&PromptToken>) -> Self { + self.maybe_prompt_token = maybe_prompt_token.map(|token| token.clone()); + self + } + // TODO: Method for maybe_origin_model_type // TODO: Method for maybe_origin_model_token // TODO: Method for maybe_origin_filename @@ -273,7 +280,7 @@ impl MediaFileInsertBuilder { maybe_title: None, // TODO maybe_text_transcript: None, // TODO maybe_scene_source_media_file_token: None, // TODO - maybe_prompt_token: None, // TODO + maybe_prompt_token: self.maybe_prompt_token.as_ref(), maybe_batch_token: None, // TODO public_bucket_directory_hash: bucket_path.get_object_hash(), maybe_public_bucket_prefix: bucket_path.get_optional_prefix(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_image_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_image_payload.rs index a0eb32355c..5c9ae75c23 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_image_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_image_payload.rs @@ -86,6 +86,7 @@ pub async fn handle_image_payload( .media_file_class(MediaFileClass::Image) .media_file_type(media_file_type) .media_file_origin_category(MediaFileOriginCategory::Inference) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) //.media_file_origin_product_category(MediaFileOriginProductCategory::Unknown) .mime_type(mime_type) .file_size_bytes(file_size_bytes as u64) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_images_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_images_payload.rs index f863495a90..8398f5bcb9 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_images_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_images_payload.rs @@ -109,6 +109,7 @@ pub async fn upload_image( .file_size_bytes(file_size_bytes as u64) .frame_width(image_info.width()) .frame_height(image_info.height()) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) .checksum_sha2(&file_hash) .insert_pool(&server_state.mysql_pool) .await?; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_model_mesh_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_model_mesh_payload.rs index 27050ddbfc..977e43299f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_model_mesh_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_model_mesh_payload.rs @@ -89,6 +89,7 @@ pub async fn handle_model_mesh_payload( //.media_file_origin_product_category(MediaFileOriginProductCategory::Unknown) .mime_type(mime_type) .file_size_bytes(file_size_bytes as u64) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) .checksum_sha2(&file_hash) .insert_pool(&server_state.mysql_pool) .await?; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_video_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_video_payload.rs index eef17c18b8..3fa18c9f06 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_video_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/handle_video_payload.rs @@ -119,6 +119,7 @@ pub async fn handle_video_payload( .maybe_frame_height(maybe_frame_height) .maybe_duration_millis(maybe_duration_millis) .checksum_sha2(&file_hash) + .maybe_prompt_token(job.maybe_prompt_token.as_ref()) .insert_pool(&server_state.mysql_pool) .await?;