diff --git a/crates/lib/mysql_queries/src/queries/generic_inference/job/list_available_generic_inference_jobs.rs b/crates/lib/mysql_queries/src/queries/generic_inference/job/list_available_generic_inference_jobs.rs index bdbfdb7dad..f88b355278 100644 --- a/crates/lib/mysql_queries/src/queries/generic_inference/job/list_available_generic_inference_jobs.rs +++ b/crates/lib/mysql_queries/src/queries/generic_inference/job/list_available_generic_inference_jobs.rs @@ -11,6 +11,7 @@ use enums::by_table::generic_inference_jobs::inference_model_type::InferenceMode use enums::common::job_status_plus::JobStatusPlus; use enums::common::visibility::Visibility; use errors::AnyhowResult; +use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::media_files::MediaFileToken; use tokens::tokens::users::UserToken; @@ -50,6 +51,8 @@ pub struct AvailableInferenceJob { /// Same user token, but a `UserToken`. pub maybe_creator_user_token_typed: Option, pub maybe_creator_anonymous_visitor_token: Option, + /// Same anonymous visitor token, but a `AnonymousVisitorTrackingToken`. + pub maybe_creator_anonymous_visitor_token_typed: Option, pub creator_ip_address: String, pub creator_set_visibility: Visibility, @@ -111,9 +114,13 @@ pub async fn list_available_generic_inference_jobs( let job_records : Vec = job_records.into_iter() .map(|record : AvailableInferenceJobRawInternal| { let maybe_creator_user_token_typed = record.maybe_creator_user_token - .as_ref() + .as_deref() .map(|s| UserToken::new_from_str(s)); + let maybe_creator_anonymous_visitor_token_typed= record.maybe_creator_anonymous_visitor_token + .as_deref() + .map(|s| AnonymousVisitorTrackingToken::new_from_str(s)); + Ok(AvailableInferenceJob { id: GenericInferenceJobId(record.id), inference_job_token: InferenceJobToken::new(record.inference_job_token), @@ -123,6 +130,7 @@ pub async fn list_available_generic_inference_jobs( maybe_creator_user_token_typed, maybe_download_url: record.maybe_download_url, maybe_creator_anonymous_visitor_token: record.maybe_creator_anonymous_visitor_token, + maybe_creator_anonymous_visitor_token_typed, maybe_cover_image_media_file_token: record.maybe_cover_image_media_file_token .map(|s| MediaFileToken::new_from_str(&s)), creator_set_visibility: Visibility::from_str(&record.creator_set_visibility) diff --git a/crates/lib/mysql_queries/src/queries/media_files/create/generic_insert/insert_media_file_generic.rs b/crates/lib/mysql_queries/src/queries/media_files/create/generic_insert/insert_media_file_generic.rs index 4ac4e7d7d9..5cb20016e8 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/create/generic_insert/insert_media_file_generic.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/create/generic_insert/insert_media_file_generic.rs @@ -20,7 +20,6 @@ use tokens::tokens::users::UserToken; use crate::payloads::media_file_extra_info::media_file_extra_info::MediaFileExtraInfo; use crate::queries::generic_synthetic_ids::transactional_increment_generic_synthetic_id::transactional_increment_generic_synthetic_id; -// thought about this it seems like this can be a bit more geneneric instead of having this we can ... pub struct InsertArgs<'a> { pub pool: &'a MySqlPool, diff --git a/crates/lib/mysql_queries/src/queries/media_files/create/generic_insert/insert_media_file_generic_from_job.rs b/crates/lib/mysql_queries/src/queries/media_files/create/generic_insert/insert_media_file_generic_from_job.rs index 4deeb33fa5..05c2941419 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/create/generic_insert/insert_media_file_generic_from_job.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/create/generic_insert/insert_media_file_generic_from_job.rs @@ -1,4 +1,3 @@ -use anyhow::anyhow; use sqlx; use sqlx::MySqlPool; @@ -9,6 +8,7 @@ use enums::by_table::media_files::media_file_origin_model_type::MediaFileOriginM use enums::by_table::media_files::media_file_origin_product_category::MediaFileOriginProductCategory; use enums::by_table::media_files::media_file_type::MediaFileType; use errors::AnyhowResult; +use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::media_files::MediaFileToken; use tokens::tokens::model_weights::ModelWeightToken; @@ -17,9 +17,8 @@ use tokens::tokens::users::UserToken; use crate::payloads::media_file_extra_info::media_file_extra_info::MediaFileExtraInfo; use crate::queries::generic_inference::job::list_available_generic_inference_jobs::AvailableInferenceJob; -use crate::queries::generic_synthetic_ids::transactional_increment_generic_synthetic_id::transactional_increment_generic_synthetic_id; +use crate::queries::media_files::create::generic_insert::insert_media_file_generic::{insert_media_file_generic, InsertArgs}; -// thought about this it seems like this can be a bit more geneneric instead of having this we can ... pub struct InsertFromJobArgs<'a> { pub pool: &'a MySqlPool, pub job: &'a AvailableInferenceJob, @@ -75,146 +74,40 @@ pub async fn insert_media_file_generic_from_job( args: InsertFromJobArgs<'_> ) -> AnyhowResult<(MediaFileToken, u64)> { - let result_token = MediaFileToken::generate(); - - let extra_file_modification_info = args - .maybe_extra_media_info.map(|extra| extra.to_json_string()) - .transpose()?; - - let mut maybe_creator_file_synthetic_id : Option = None; - let mut maybe_creator_category_synthetic_id : Option = None; - - let is_batch_generated = args.maybe_batch_token.is_some(); - - let mut transaction = args.pool.begin().await?; - - if let Some(creator_user_token) = args.job.maybe_creator_user_token.as_deref() { - let user_token = UserToken::new_from_str(creator_user_token); - - let next_media_file_id = transactional_increment_generic_synthetic_id( - &user_token, - args.maybe_creator_file_synthetic_id_category, - &mut transaction - ).await?; - - let category_id = transactional_increment_generic_synthetic_id( - &user_token, - args.maybe_creator_category_synthetic_id_category, - &mut transaction - ).await?; - - maybe_creator_file_synthetic_id = Some(next_media_file_id); - maybe_creator_category_synthetic_id = Some(category_id); - } - - let query_result = sqlx::query!( - r#" - INSERT INTO media_files - SET - token = ?, - - media_class = ?, - media_type = ?, - - origin_category = ?, - origin_product_category = ?, - maybe_origin_model_type = ?, - maybe_origin_model_token = ?, - maybe_origin_filename = ?, - - is_batch_generated = ?, - maybe_batch_token = ?, - - maybe_mime_type = ?, - file_size_bytes = ?, - maybe_duration_millis = ?, - maybe_audio_encoding = ?, - maybe_video_encoding = ?, - maybe_frame_width = ?, - maybe_frame_height = ?, - maybe_prompt_token = ?, - checksum_sha2 = ?, - - maybe_title = ?, - maybe_text_transcript = ?, - - public_bucket_directory_hash = ?, - maybe_public_bucket_prefix = ?, - maybe_public_bucket_extension = ?, - - maybe_creator_user_token = ?, - maybe_creator_anonymous_visitor_token = ?, - - creator_ip_address = ?, - creator_set_visibility = ?, - - maybe_creator_file_synthetic_id = ?, - maybe_creator_category_synthetic_id = ?, - - extra_file_modification_info = ?, - - maybe_mod_user_token = ?, - is_generated_on_prem = ?, - generated_by_worker = ?, - generated_by_cluster = ? - "#, - result_token, - - args.media_class.to_str(), - args.media_type.to_str(), - - args.origin_category.to_str(), - args.origin_product_category.to_str(), - args.maybe_origin_model_type.map(|e| e.to_str()), - args.maybe_origin_model_token.map(|e| e.to_string()), - args.maybe_origin_filename, - - is_batch_generated, - args.maybe_batch_token.map(|e| e.as_str()), - - args.maybe_mime_type, - args.file_size_bytes, - args.maybe_duration_millis, - args.maybe_audio_encoding, - args.maybe_video_encoding, - args.maybe_frame_width, - args.maybe_frame_height, - args.maybe_prompt_token.map(|e| e.as_str()), - args.checksum_sha2, - - args.maybe_title, - args.maybe_text_transcript, - - args.public_bucket_directory_hash, - args.maybe_public_bucket_prefix, - args.maybe_public_bucket_extension, - - args.job.maybe_creator_user_token.as_deref(), - args.job.maybe_creator_anonymous_visitor_token.as_deref(), - - args.job.creator_ip_address, - args.job.creator_set_visibility.to_str(), - - maybe_creator_file_synthetic_id, - maybe_creator_category_synthetic_id, - - extra_file_modification_info, - - args.maybe_mod_user_token, - args.is_generated_on_prem, - args.generated_by_worker, - args.generated_by_cluster - ).execute(&mut *transaction).await; - - let record_id = match query_result { - Ok(res) => res.last_insert_id(), - Err(err) => { - // TODO: handle better - //transaction.rollback().await?; - return Err(anyhow!("Mysql error: {:?}", err)); - } - }; - - transaction.commit().await?; - Ok((result_token, record_id)) -} \ No newline at end of file + insert_media_file_generic(InsertArgs { + checksum_sha2: args.checksum_sha2, + creator_ip_address: &args.job.creator_ip_address, + creator_set_visibility: args.job.creator_set_visibility, + file_size_bytes: args.file_size_bytes, + generated_by_cluster: args.generated_by_cluster, + generated_by_worker: args.generated_by_worker, + is_generated_on_prem: args.is_generated_on_prem, + maybe_audio_encoding: args.maybe_audio_encoding, + maybe_batch_token: args.maybe_batch_token, + maybe_creator_anonymous_visitor_token: args.job.maybe_creator_anonymous_visitor_token_typed.as_ref(), + maybe_creator_category_synthetic_id_category: args.maybe_creator_category_synthetic_id_category, + maybe_creator_file_synthetic_id_category: args.maybe_creator_file_synthetic_id_category, + maybe_creator_user_token: args.job.maybe_creator_user_token_typed.as_ref(), + maybe_duration_millis: args.maybe_duration_millis, + maybe_extra_media_info: args.maybe_extra_media_info, + maybe_frame_height: args.maybe_frame_height, + maybe_frame_width: args.maybe_frame_width, + maybe_mime_type: args.maybe_mime_type, + maybe_mod_user_token: args.maybe_mod_user_token, + maybe_origin_filename: args.maybe_origin_filename, + maybe_origin_model_token: args.maybe_origin_model_token, + maybe_origin_model_type: args.maybe_origin_model_type, + maybe_prompt_token: args.maybe_prompt_token, + maybe_public_bucket_extension: args.maybe_public_bucket_extension, + maybe_public_bucket_prefix: args.maybe_public_bucket_prefix, + maybe_text_transcript: args.maybe_text_transcript, + maybe_title: args.maybe_title, + maybe_video_encoding: args.maybe_video_encoding, + media_class: args.media_class, + media_type: args.media_type, + origin_category: args.origin_category, + origin_product_category: args.origin_product_category, + pool: &args.pool, + public_bucket_directory_hash: args.public_bucket_directory_hash, + }).await +}