diff --git a/crates/lib/mysql_queries/src/queries/media_files/batch_get_media_files.rs b/crates/lib/mysql_queries/src/queries/media_files/batch_get_media_files.rs index 3a5a6de6a3..126c1cca32 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/batch_get_media_files.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/batch_get_media_files.rs @@ -23,6 +23,8 @@ use tokens::tokens::prompts::PromptToken; use tokens::tokens::users::UserToken; use tokens::traits::mysql_token_from_row::MySqlTokenFromRow; +use crate::payloads::prompt_args::prompt_inner_payload::PromptInnerPayload; + #[derive(Serialize, Debug)] pub struct MediaFile { pub token: MediaFileToken, @@ -53,6 +55,7 @@ pub struct MediaFile { pub creator_set_visibility: Visibility, pub maybe_prompt_token: Option, + pub maybe_prompt_args: Option, pub maybe_file_cover_image_public_bucket_hash: Option, pub maybe_file_cover_image_public_bucket_prefix: Option, @@ -125,6 +128,7 @@ pub struct MediaFileRaw { pub creator_set_visibility: Visibility, pub maybe_prompt_token: Option, + pub maybe_other_prompt_args: Option, pub maybe_file_cover_image_public_bucket_hash: Option, pub maybe_file_cover_image_public_bucket_prefix: Option, @@ -217,6 +221,12 @@ pub async fn batch_get_media_files( maybe_creator_gravatar_hash: record.maybe_creator_gravatar_hash, creator_set_visibility: record.creator_set_visibility, maybe_prompt_token: record.maybe_prompt_token, + maybe_prompt_args: record.maybe_other_prompt_args + .as_deref() + .map(|args| PromptInnerPayload::from_json(args)) + .transpose() + .ok() // NB: Fail open + .flatten(), maybe_file_cover_image_public_bucket_hash: record.maybe_file_cover_image_public_bucket_hash, maybe_file_cover_image_public_bucket_prefix: record.maybe_file_cover_image_public_bucket_prefix, maybe_file_cover_image_public_bucket_extension: record.maybe_file_cover_image_public_bucket_extension, @@ -313,6 +323,8 @@ LEFT OUTER JOIN users as model_weight_creator LEFT OUTER JOIN entity_stats ON entity_stats.entity_type = "media_file" AND entity_stats.entity_token = m.token +LEFT OUTER JOIN prompts + ON prompts.token = m.maybe_prompt_token "#) } @@ -349,6 +361,7 @@ impl FromRow<'_, MySqlRow> for MediaFileRaw { creator_set_visibility: Visibility::try_from_mysql_row(row, "creator_set_visibility")?, maybe_prompt_token: PromptToken::try_from_mysql_row_nullable(row, "maybe_prompt_token")?, + maybe_other_prompt_args: row.try_get("maybe_other_prompt_args")?, maybe_file_cover_image_public_bucket_hash: row.try_get("maybe_file_cover_image_public_bucket_hash")?, maybe_file_cover_image_public_bucket_prefix: row.try_get("maybe_file_cover_image_public_bucket_prefix")?, diff --git a/crates/lib/mysql_queries/src/queries/media_files/get_media_file.rs b/crates/lib/mysql_queries/src/queries/media_files/get_media_file.rs index 708d82e2f9..da7572a30f 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/get_media_file.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/get_media_file.rs @@ -6,8 +6,8 @@ use anyhow::anyhow; use chrono::{DateTime, Utc}; use sqlx::MySqlPool; -use enums::by_table::media_files::media_file_class::MediaFileClass; +use enums::by_table::media_files::media_file_class::MediaFileClass; use enums::by_table::media_files::media_file_subtype::MediaFileSubtype; use enums::by_table::media_files::media_file_type::MediaFileType; use enums::by_table::model_weights::weights_category::WeightsCategory; @@ -21,6 +21,8 @@ use tokens::tokens::model_weights::ModelWeightToken; use tokens::tokens::prompts::PromptToken; use tokens::tokens::users::UserToken; +use crate::payloads::prompt_args::prompt_inner_payload::PromptInnerPayload; + #[derive(Serialize, Debug)] pub struct MediaFile { pub token: MediaFileToken, @@ -54,6 +56,7 @@ pub struct MediaFile { pub creator_set_visibility: Visibility, pub maybe_prompt_token: Option, + pub maybe_prompt_args: Option, pub maybe_file_cover_image_public_bucket_hash: Option, pub maybe_file_cover_image_public_bucket_prefix: Option, @@ -129,6 +132,7 @@ pub struct MediaFileRaw { pub creator_set_visibility: Visibility, pub maybe_prompt_token: Option, + pub maybe_other_prompt_args: Option, pub maybe_file_cover_image_public_bucket_hash: Option, pub maybe_file_cover_image_public_bucket_prefix: Option, @@ -185,6 +189,13 @@ pub async fn get_media_file( } }; + let maybe_prompt_args = record.maybe_other_prompt_args + .as_deref() + .map(|args| PromptInnerPayload::from_json(args)) + .transpose() + .ok() // NB: Fail open + .flatten(); + Ok(Some(MediaFile { token: record.token, media_type: record.media_type, @@ -202,6 +213,7 @@ pub async fn get_media_file( maybe_creator_anonymous_visitor_token: record.maybe_creator_anonymous_visitor_token, creator_set_visibility: record.creator_set_visibility, maybe_prompt_token: record.maybe_prompt_token, + maybe_prompt_args, maybe_file_cover_image_public_bucket_hash: record.maybe_file_cover_image_public_bucket_hash, maybe_file_cover_image_public_bucket_prefix: record.maybe_file_cover_image_public_bucket_prefix, maybe_file_cover_image_public_bucket_extension: record.maybe_file_cover_image_public_bucket_extension, @@ -258,6 +270,7 @@ SELECT m.maybe_duration_millis, m.maybe_prompt_token as `maybe_prompt_token: tokens::tokens::prompts::PromptToken`, + prompts.maybe_other_args as maybe_other_prompt_args, media_file_cover_image.public_bucket_directory_hash as maybe_file_cover_image_public_bucket_hash, media_file_cover_image.maybe_public_bucket_prefix as maybe_file_cover_image_public_bucket_prefix, @@ -304,6 +317,8 @@ LEFT OUTER JOIN users as model_weight_creator LEFT OUTER JOIN entity_stats ON entity_stats.entity_type = "media_file" AND entity_stats.entity_token = m.token +LEFT OUTER JOIN prompts + ON prompts.token = m.maybe_prompt_token WHERE m.token = ? "#, @@ -344,6 +359,7 @@ SELECT m.maybe_duration_millis, m.maybe_prompt_token as `maybe_prompt_token: tokens::tokens::prompts::PromptToken`, + prompts.maybe_other_args as maybe_other_prompt_args, media_file_cover_image.public_bucket_directory_hash as maybe_file_cover_image_public_bucket_hash, media_file_cover_image.maybe_public_bucket_prefix as maybe_file_cover_image_public_bucket_prefix, @@ -390,6 +406,8 @@ LEFT OUTER JOIN users as model_weight_creator LEFT OUTER JOIN entity_stats ON entity_stats.entity_type = "media_file" AND entity_stats.entity_token = m.token +LEFT OUTER JOIN prompts + ON prompts.token = m.maybe_prompt_token WHERE m.token = ? AND m.user_deleted_at IS NULL diff --git a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files.rs b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files.rs index 3429862d39..8aab2e3fd9 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files.rs @@ -13,6 +13,7 @@ use enums::traits::mysql_from_row::MySqlFromRow; use errors::AnyhowResult; use tokens::tokens::media_files::MediaFileToken; use tokens::tokens::users::UserToken; +use crate::payloads::prompt_args::prompt_inner_payload::PromptInnerPayload; pub struct MediaFileListPage { pub records: Vec, @@ -52,6 +53,7 @@ pub struct MediaFileListItem { pub maybe_title: Option, pub maybe_text_transcript: Option, + pub maybe_prompt_args: Option, pub creator_set_visibility: Visibility, @@ -124,6 +126,12 @@ pub async fn list_media_files(args: ListMediaFilesArgs<'_>) -> AnyhowResult, maybe_text_transcript: Option, + maybe_other_prompt_args: Option, created_at: DateTime, updated_at: DateTime, @@ -387,6 +399,7 @@ impl FromRow<'_, MySqlRow> for MediaFileListItemInternal { maybe_file_cover_image_public_bucket_extension: row.try_get("maybe_file_cover_image_public_bucket_extension")?, maybe_title: row.try_get("maybe_title")?, maybe_text_transcript: row.try_get("maybe_text_transcript")?, + maybe_other_prompt_args: row.try_get("maybe_other_prompt_args")?, created_at: row.try_get("created_at")?, updated_at: row.try_get("updated_at")?, comment_count: row.try_get("comment_count")?, diff --git a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_batch_token.rs b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_batch_token.rs index 7d455261b6..c52a770af0 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_batch_token.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_batch_token.rs @@ -12,6 +12,7 @@ use enums::traits::mysql_from_row::MySqlFromRow; use errors::AnyhowResult; use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::media_files::MediaFileToken; +use crate::payloads::prompt_args::prompt_inner_payload::PromptInnerPayload; pub struct MediaFileListPage { pub records: Vec, @@ -45,6 +46,7 @@ pub struct MediaFileListItem { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + pub maybe_prompt_args: Option, pub maybe_ratings_positive_count: Option, pub maybe_ratings_negative_count: Option, @@ -112,6 +114,12 @@ pub async fn list_media_files_by_batch_token(args: ListMediaFileByBatchArgs<'_>) creator_set_visibility: record.creator_set_visibility, maybe_title: record.maybe_title, maybe_text_transcript: record.maybe_text_transcript, + maybe_prompt_args: record.maybe_other_prompt_args + .as_deref() + .map(|args| PromptInnerPayload::from_json(args)) + .transpose() + .ok() // NB: Fail open + .flatten(), maybe_ratings_positive_count: record.maybe_ratings_positive_count, maybe_ratings_negative_count: record.maybe_ratings_negative_count, maybe_bookmark_count: record.maybe_bookmark_count, @@ -153,6 +161,7 @@ fn select_result_fields() -> String { m.maybe_title, m.maybe_text_transcript, + prompts.maybe_other_args as maybe_other_prompt_args, entity_stats.ratings_positive_count as maybe_ratings_positive_count, entity_stats.ratings_negative_count as maybe_ratings_negative_count, @@ -194,6 +203,8 @@ LEFT OUTER JOIN model_weights as w LEFT OUTER JOIN entity_stats ON entity_stats.entity_type = "media_file" AND entity_stats.entity_token = m.token +LEFT OUTER JOIN prompts + ON prompts.token = m.maybe_prompt_token "# )); @@ -253,6 +264,7 @@ struct MediaFileListItemInternal { /// Text transcripts for TTS, etc. maybe_text_transcript: Option, + maybe_other_prompt_args: Option, maybe_ratings_positive_count: Option, maybe_ratings_negative_count: Option, @@ -291,6 +303,7 @@ impl FromRow<'_, MySqlRow> for MediaFileListItemInternal { creator_set_visibility: Visibility::try_from_mysql_row(row, "creator_set_visibility")?, maybe_title: row.try_get("maybe_title")?, maybe_text_transcript: row.try_get("maybe_text_transcript")?, + maybe_other_prompt_args: row.try_get("maybe_other_prompt_args")?, maybe_ratings_positive_count: row.try_get("maybe_ratings_positive_count")?, maybe_ratings_negative_count: row.try_get("maybe_ratings_negative_count")?, maybe_bookmark_count: row.try_get("maybe_bookmark_count")?, diff --git a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_tokens.rs b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_tokens.rs index aa1959791f..eb51be0da8 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_tokens.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_by_tokens.rs @@ -10,6 +10,7 @@ use enums::traits::mysql_from_row::MySqlFromRow; use errors::AnyhowResult; use tokens::tokens::media_files::MediaFileToken; use tokens::tokens::users::UserToken; +use crate::payloads::prompt_args::prompt_inner_payload::PromptInnerPayload; #[derive(Serialize)] pub struct MediaFilesByTokensRecord { @@ -43,6 +44,7 @@ pub struct MediaFilesByTokensRecord { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + pub maybe_prompt_args: Option, pub maybe_file_cover_image_public_bucket_hash: Option, pub maybe_file_cover_image_public_bucket_prefix: Option, @@ -98,6 +100,7 @@ async fn get_raw_media_files_by_tokens( m.maybe_title, m.maybe_text_transcript, + prompts.maybe_other_args as maybe_other_prompt_args, entity_stats.ratings_positive_count as maybe_ratings_positive_count, entity_stats.ratings_negative_count as maybe_ratings_negative_count, @@ -114,6 +117,8 @@ async fn get_raw_media_files_by_tokens( LEFT OUTER JOIN entity_stats ON entity_stats.entity_type = "media_file" AND entity_stats.entity_token = m.token + LEFT OUTER JOIN prompts + ON prompts.token = m.maybe_prompt_token WHERE m.creator_set_visibility = "public" AND m.token IN ( @@ -145,6 +150,7 @@ async fn get_raw_media_files_by_tokens( m.maybe_title, m.maybe_text_transcript, + prompts.maybe_other_args as maybe_other_prompt_args, entity_stats.ratings_positive_count as maybe_ratings_positive_count, entity_stats.ratings_negative_count as maybe_ratings_negative_count, @@ -167,6 +173,8 @@ async fn get_raw_media_files_by_tokens( AND entity_stats.entity_token = m.token LEFT OUTER JOIN media_files as media_file_cover_image ON media_file_cover_image.token = m.maybe_cover_image_media_file_token + LEFT OUTER JOIN prompts + ON prompts.token = m.maybe_prompt_token WHERE m.creator_set_visibility = "public" AND m.user_deleted_at IS NULL @@ -228,6 +236,13 @@ fn map_to_media_files(dataset:Vec) -> Vec) -> Vec, pub maybe_text_transcript: Option, + pub maybe_other_prompt_args: Option, pub maybe_file_cover_image_public_bucket_hash: Option, pub maybe_file_cover_image_public_bucket_prefix: Option, @@ -313,6 +329,7 @@ impl FromRow<'_, MySqlRow> for RawMediaFileJoinUser { maybe_bookmark_count: row.try_get("maybe_bookmark_count")?, maybe_title: row.try_get("maybe_title")?, maybe_text_transcript: row.try_get("maybe_text_transcript")?, + maybe_other_prompt_args: row.try_get("maybe_other_prompt_args")?, maybe_file_cover_image_public_bucket_hash: row.try_get("maybe_file_cover_image_public_bucket_hash")?, maybe_file_cover_image_public_bucket_prefix: row.try_get("maybe_file_cover_image_public_bucket_prefix")?, maybe_file_cover_image_public_bucket_extension: row.try_get("maybe_file_cover_image_public_bucket_extension")?, diff --git a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_for_user.rs b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_for_user.rs index bc154ee707..d2b198d37c 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_for_user.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/list/list_media_files_for_user.rs @@ -15,6 +15,8 @@ use enums::traits::mysql_from_row::MySqlFromRow; use errors::AnyhowResult; use tokens::tokens::media_files::MediaFileToken; +use crate::payloads::prompt_args::prompt_inner_payload::PromptInnerPayload; + pub struct MediaFileListPage { pub records: Vec, @@ -53,6 +55,7 @@ pub struct MediaFileListItem { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + pub maybe_prompt_args: Option, pub maybe_ratings_positive_count: Option, pub maybe_ratings_negative_count: Option, @@ -133,6 +136,12 @@ pub async fn list_media_files_for_user(args: ListMediaFileForUserArgs<'_>) -> An maybe_file_cover_image_public_bucket_extension: record.maybe_file_cover_image_public_bucket_extension, maybe_title: record.maybe_title, maybe_text_transcript: record.maybe_text_transcript, + maybe_prompt_args: record.maybe_other_prompt_args + .as_deref() + .map(|args| PromptInnerPayload::from_json(args)) + .transpose() + .ok() // NB: Fail open + .flatten(), maybe_ratings_positive_count: record.maybe_ratings_positive_count, maybe_ratings_negative_count: record.maybe_ratings_negative_count, maybe_bookmark_count: record.maybe_bookmark_count, @@ -179,6 +188,7 @@ fn select_result_fields() -> String { m.maybe_title, m.maybe_text_transcript, + prompts.maybe_other_args as maybe_other_prompt_args, entity_stats.ratings_positive_count as maybe_ratings_positive_count, entity_stats.ratings_negative_count as maybe_ratings_negative_count, @@ -225,6 +235,8 @@ LEFT OUTER JOIN media_files as media_file_cover_image LEFT OUTER JOIN entity_stats ON entity_stats.entity_type = "media_file" AND entity_stats.entity_token = m.token +LEFT OUTER JOIN prompts + ON prompts.token = m.maybe_prompt_token "# )); @@ -312,6 +324,7 @@ struct MediaFileListItemInternal { // NB: The title won't be populated for `tts_models` records or non-`model_weights` records. maybe_origin_model_title: Option, + maybe_other_prompt_args: Option, media_type: MediaFileType, media_class: MediaFileClass, @@ -361,6 +374,7 @@ impl FromRow<'_, MySqlRow> for MediaFileListItemInternal { maybe_origin_model_type: MediaFileOriginModelType::try_from_mysql_row_nullable(row, "maybe_origin_model_type")?, maybe_origin_model_token: row.try_get("maybe_origin_model_token")?, maybe_origin_model_title: row.try_get("maybe_origin_model_title")?, + maybe_other_prompt_args: row.try_get("maybe_other_prompt_args")?, media_type: MediaFileType::try_from_mysql_row(row, "media_type")?, media_class: MediaFileClass::try_from_mysql_row(row, "media_class")?, public_bucket_directory_hash: row.try_get("public_bucket_directory_hash")?, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs index f6aaddc40b..b649c904a5 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs @@ -18,6 +18,7 @@ use enums::by_table::media_files::media_file_type::MediaFileType; use enums::by_table::model_weights::weights_category::WeightsCategory; use enums::by_table::model_weights::weights_types::WeightsType; use enums::common::visibility::Visibility; +use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use mysql_queries::queries::media_files::batch_get_media_files::batch_get_media_files; use mysql_queries::queries::media_files::get_media_file::get_media_file; use mysql_queries::queries::tts::tts_results::query_tts_result::select_tts_result_by_token; @@ -105,6 +106,10 @@ pub struct BatchMediaFileInfo { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + /// For Comfy / Video Style Transfer jobs, this might include + /// the name of the selected style. + pub maybe_style_name: Option, + /// The foreign key to the prompt used to generate the media, if applicable. pub maybe_prompt_token: Option, @@ -296,6 +301,10 @@ pub async fn batch_get_media_files_handler( ), maybe_title: result.maybe_title, maybe_text_transcript: result.maybe_text_transcript, + maybe_style_name: result.maybe_prompt_args + .as_ref() + .and_then(|args| args.style_name.as_ref()) + .and_then(|style| style.to_style_name()), maybe_model_weight_info: match result.maybe_model_weights_token { None => None, Some(weight_token) => Some(BatchGetMediaFilesModelInfo { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs index 844e2714d3..cf53f462aa 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs @@ -16,6 +16,7 @@ use enums::by_table::media_files::media_file_type::MediaFileType; use enums::by_table::model_weights::weights_category::WeightsCategory; use enums::by_table::model_weights::weights_types::WeightsType; use enums::common::visibility::Visibility; +use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use mysql_queries::queries::media_files::get_media_file::get_media_file; use mysql_queries::queries::tts::tts_results::query_tts_result::select_tts_result_by_token; use tokens::tokens::batch_generations::BatchGenerationToken; @@ -91,6 +92,10 @@ pub struct MediaFileInfo { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + /// For Comfy / Video Style Transfer jobs, this might include + /// the name of the selected style. + pub maybe_style_name: Option, + /// The foreign key to the prompt used to generate the media, if applicable. pub maybe_prompt_token: Option, @@ -312,6 +317,10 @@ async fn modern_media_file_lookup( ), maybe_title: result.maybe_title, maybe_text_transcript: result.maybe_text_transcript, + maybe_style_name: result.maybe_prompt_args + .as_ref() + .and_then(|args| args.style_name.as_ref()) + .and_then(|style| style.to_style_name()), maybe_model_weight_info: match result.maybe_model_weights_token { None => None, Some(weight_token) => Some(GetMediaFileModelInfo { @@ -419,6 +428,7 @@ async fn emulate_media_file_with_legacy_tts_result_lookup( result.maybe_creator_gravatar_hash, ), maybe_prompt_token: None, + maybe_style_name: None, creator_set_visibility: result.creator_set_visibility, maybe_title: None, maybe_text_transcript: Some(result.raw_inference_text), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs index 8c187516c5..50ab4a5a95 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs @@ -13,6 +13,7 @@ use enums::by_table::media_files::media_file_origin_category::MediaFileOriginCat use enums::by_table::media_files::media_file_origin_model_type::MediaFileOriginModelType; use enums::by_table::media_files::media_file_origin_product_category::MediaFileOriginProductCategory; use enums::by_table::media_files::media_file_type::MediaFileType; +use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use mysql_queries::queries::media_files::list::list_media_files_by_tokens::list_media_files_by_tokens; use tokens::tokens::media_files::MediaFileToken; use users_component::common_responses::user_details_lite::UserDetailsLight; @@ -67,6 +68,10 @@ pub struct MediaFile { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + /// For Comfy / Video Style Transfer jobs, this might include + /// the name of the selected style. + pub maybe_style_name: Option, + /// Statistics about the media file pub stats: SimpleEntityStats, @@ -190,6 +195,10 @@ pub async fn list_featured_media_files_handler( ), maybe_title: m.maybe_title, maybe_text_transcript: m.maybe_text_transcript, + maybe_style_name: m.maybe_prompt_args + .as_ref() + .and_then(|args| args.style_name.as_ref()) + .and_then(|style| style.to_style_name()), stats: SimpleEntityStats { positive_rating_count: m.maybe_ratings_positive_count.unwrap_or(0), bookmark_count: m.maybe_bookmark_count.unwrap_or(0), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs index fd512f289f..c7c20c7428 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs @@ -15,6 +15,7 @@ use enums::by_table::media_files::media_file_origin_product_category::MediaFileO use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; use enums::common::visibility::Visibility; +use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use mysql_queries::queries::media_files::list::list_media_files_by_batch_token::{list_media_files_by_batch_token, ListMediaFileByBatchArgs}; use mysql_queries::queries::media_files::list::list_media_files_for_user::{list_media_files_for_user, ListMediaFileForUserArgs}; use tokens::tokens::batch_generations::BatchGenerationToken; @@ -85,6 +86,10 @@ pub struct MediaFilesByBatchListItem { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + /// For Comfy / Video Style Transfer jobs, this might include + /// the name of the selected style. + pub maybe_style_name: Option, + /// Statistics about the media file pub stats: SimpleEntityStats, @@ -223,6 +228,10 @@ pub async fn list_media_files_by_batch_token_handler( creator_set_visibility: record.creator_set_visibility, maybe_title: record.maybe_title, maybe_text_transcript: record.maybe_text_transcript, + maybe_style_name: record.maybe_prompt_args + .as_ref() + .and_then(|args| args.style_name.as_ref()) + .and_then(|style| style.to_style_name()), stats: SimpleEntityStats { positive_rating_count: record.maybe_ratings_positive_count.unwrap_or(0), bookmark_count: record.maybe_bookmark_count.unwrap_or(0), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs index 823666fcf5..c18aab7cad 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs @@ -17,6 +17,7 @@ use enums::by_table::media_files::media_file_origin_product_category::MediaFileO use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; use enums::common::visibility::Visibility; +use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use mysql_queries::queries::media_files::list::list_media_files_for_user::{list_media_files_for_user, ListMediaFileForUserArgs}; use tokens::tokens::media_files::MediaFileToken; @@ -95,6 +96,10 @@ pub struct MediaFileForUserListItem { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + /// For Comfy / Video Style Transfer jobs, this might include + /// the name of the selected style. + pub maybe_style_name: Option, + /// Statistics about the media file pub stats: SimpleEntityStats, @@ -263,6 +268,10 @@ pub async fn list_media_files_for_user_handler( creator_set_visibility: record.creator_set_visibility, maybe_title: record.maybe_title, maybe_text_transcript: record.maybe_text_transcript, + maybe_style_name: record.maybe_prompt_args + .as_ref() + .and_then(|args| args.style_name.as_ref()) + .and_then(|style| style.to_style_name()), stats: SimpleEntityStats { positive_rating_count: record.maybe_ratings_positive_count.unwrap_or(0), bookmark_count: record.maybe_bookmark_count.unwrap_or(0), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs index a885502519..b53fa6061a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs @@ -15,6 +15,7 @@ use enums::by_table::media_files::media_file_origin_product_category::MediaFileO use enums::by_table::media_files::media_file_type::MediaFileType; use enums::common::view_as::ViewAs; use enums::common::visibility::Visibility; +use enums::no_table::style_transfer::style_transfer_name::StyleTransferName; use mysql_queries::queries::media_files::list::list_media_files::{list_media_files, ListMediaFilesArgs}; use tokens::tokens::media_files::MediaFileToken; use users_component::common_responses::user_details_lite::UserDetailsLight; @@ -86,6 +87,10 @@ pub struct MediaFileListItem { /// Text transcripts for TTS, etc. pub maybe_text_transcript: Option, + /// For Comfy / Video Style Transfer jobs, this might include + /// the name of the selected style. + pub maybe_style_name: Option, + pub created_at: DateTime, pub updated_at: DateTime, } @@ -264,6 +269,10 @@ pub async fn list_media_files_handler( creator_set_visibility: record.creator_set_visibility, maybe_title: record.maybe_title, maybe_text_transcript: record.maybe_text_transcript, + maybe_style_name: record.maybe_prompt_args + .as_ref() + .and_then(|args| args.style_name.as_ref()) + .and_then(|style| style.to_style_name()), created_at: record.created_at, updated_at: record.updated_at, })