add cover images to get and batch get media files

This commit is contained in:
Brandon Thomas committed 2024-04-16 21:29:47 -04:00
1 parent e198b66f8a
commit eb7e9e5aa9
5 files changed
+113 -17

No files matched your search

@@ -54,6 +54,10 @@ pub struct MediaFile {
pub maybe_prompt_token: Option<PromptToken>,
pub maybe_file_cover_image_public_bucket_hash: Option<String>,
pub maybe_file_cover_image_public_bucket_prefix: Option<String>,
pub maybe_file_cover_image_public_bucket_extension: Option<String>,
pub maybe_model_weights_token: Option<ModelWeightToken>,
pub maybe_model_weights_title: Option<String>,
pub maybe_model_weights_type: Option<WeightsType>,
@@ -122,6 +126,10 @@ pub struct MediaFileRaw {
pub maybe_prompt_token: Option<PromptToken>,
pub maybe_file_cover_image_public_bucket_hash: Option<String>,
pub maybe_file_cover_image_public_bucket_prefix: Option<String>,
pub maybe_file_cover_image_public_bucket_extension: Option<String>,
pub maybe_model_weights_token: Option<ModelWeightToken>,
pub maybe_model_weights_title: Option<String>,
pub maybe_model_weights_type: Option<WeightsType>,
@@ -209,6 +217,9 @@ 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_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,
maybe_model_weights_token: record.maybe_model_weights_token,
maybe_model_weights_title: record.maybe_model_weights_title,
maybe_model_weights_type: record.maybe_model_weights_type,
@@ -257,6 +268,10 @@ SELECT
m.maybe_prompt_token,
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,
media_file_cover_image.maybe_public_bucket_extension as maybe_file_cover_image_public_bucket_extension,
m.creator_set_visibility,
model_weights.token as maybe_model_weights_token,
@@ -264,9 +279,9 @@ SELECT
model_weights.weights_type as maybe_model_weights_type,
model_weights.weights_category as maybe_model_weights_category,
cover_image.public_bucket_directory_hash as maybe_model_cover_image_public_bucket_hash,
cover_image.maybe_public_bucket_prefix as maybe_model_cover_image_public_bucket_prefix,
cover_image.maybe_public_bucket_extension as maybe_model_cover_image_public_bucket_extension,
model_weight_cover_image.public_bucket_directory_hash as maybe_model_cover_image_public_bucket_hash,
model_weight_cover_image.maybe_public_bucket_prefix as maybe_model_cover_image_public_bucket_prefix,
model_weight_cover_image.maybe_public_bucket_extension as maybe_model_cover_image_public_bucket_extension,
model_weight_creator.token as maybe_model_weight_creator_user_token,
model_weight_creator.username as maybe_model_weight_creator_username,
@@ -289,8 +304,10 @@ LEFT OUTER JOIN users
ON m.maybe_creator_user_token = users.token
LEFT OUTER JOIN model_weights
ON m.maybe_origin_model_token = model_weights.token
LEFT OUTER JOIN media_files as cover_image
ON cover_image.token = model_weights.maybe_cover_image_media_file_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 media_files as model_weight_cover_image
ON model_weight_cover_image.token = model_weights.maybe_cover_image_media_file_token
LEFT OUTER JOIN users as model_weight_creator
ON model_weight_creator.token = model_weights.creator_user_token
LEFT OUTER JOIN entity_stats
@@ -333,6 +350,10 @@ impl FromRow<'_, MySqlRow> for MediaFileRaw {
maybe_prompt_token: PromptToken::try_from_mysql_row_nullable(row, "maybe_prompt_token")?,
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")?,
maybe_model_weights_token: ModelWeightToken::try_from_mysql_row_nullable(row, "maybe_model_weights_token")?,
maybe_model_weights_title: row.try_get("maybe_model_weights_title")?,
maybe_model_weights_type: WeightsType::try_from_mysql_row_nullable(row, "maybe_model_weights_type")?,
@@ -55,6 +55,10 @@ pub struct MediaFile {
pub maybe_prompt_token: Option<PromptToken>,
pub maybe_file_cover_image_public_bucket_hash: Option<String>,
pub maybe_file_cover_image_public_bucket_prefix: Option<String>,
pub maybe_file_cover_image_public_bucket_extension: Option<String>,
pub maybe_model_weights_token: Option<ModelWeightToken>,
pub maybe_model_weights_title: Option<String>,
pub maybe_model_weights_type: Option<WeightsType>,
@@ -126,6 +130,10 @@ pub struct MediaFileRaw {
pub maybe_prompt_token: Option<PromptToken>,
pub maybe_file_cover_image_public_bucket_hash: Option<String>,
pub maybe_file_cover_image_public_bucket_prefix: Option<String>,
pub maybe_file_cover_image_public_bucket_extension: Option<String>,
pub maybe_model_weights_token: Option<ModelWeightToken>,
pub maybe_model_weights_title: Option<String>,
pub maybe_model_weights_type: Option<WeightsType>,
@@ -194,6 +202,9 @@ 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_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,
maybe_model_weights_token: record.maybe_model_weights_token,
maybe_model_weights_title: record.maybe_model_weights_title,
maybe_model_weights_type: record.maybe_model_weights_type,
@@ -248,6 +259,10 @@ SELECT
m.maybe_prompt_token as `maybe_prompt_token: tokens::tokens::prompts::PromptToken`,
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,
media_file_cover_image.maybe_public_bucket_extension as maybe_file_cover_image_public_bucket_extension,
m.creator_set_visibility as `creator_set_visibility: enums::common::visibility::Visibility`,
model_weights.token as `maybe_model_weights_token: tokens::tokens::model_weights::ModelWeightToken`,
@@ -255,9 +270,9 @@ SELECT
model_weights.weights_type as `maybe_model_weights_type: enums::by_table::model_weights::weights_types::WeightsType`,
model_weights.weights_category as `maybe_model_weights_category: enums::by_table::model_weights::weights_category::WeightsCategory`,
cover_image.public_bucket_directory_hash as maybe_model_cover_image_public_bucket_hash,
cover_image.maybe_public_bucket_prefix as maybe_model_cover_image_public_bucket_prefix,
cover_image.maybe_public_bucket_extension as maybe_model_cover_image_public_bucket_extension,
model_weight_cover_image.public_bucket_directory_hash as maybe_model_cover_image_public_bucket_hash,
model_weight_cover_image.maybe_public_bucket_prefix as maybe_model_cover_image_public_bucket_prefix,
model_weight_cover_image.maybe_public_bucket_extension as maybe_model_cover_image_public_bucket_extension,
model_weight_creator.token as `maybe_model_weight_creator_user_token: tokens::tokens::users::UserToken`,
model_weight_creator.username as maybe_model_weight_creator_username,
@@ -280,8 +295,10 @@ LEFT OUTER JOIN users
ON m.maybe_creator_user_token = users.token
LEFT OUTER JOIN model_weights
ON m.maybe_origin_model_token = model_weights.token
LEFT OUTER JOIN media_files as cover_image
ON cover_image.token = model_weights.maybe_cover_image_media_file_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 media_files as model_weight_cover_image
ON model_weight_cover_image.token = model_weights.maybe_cover_image_media_file_token
LEFT OUTER JOIN users as model_weight_creator
ON model_weight_creator.token = model_weights.creator_user_token
LEFT OUTER JOIN entity_stats
@@ -328,6 +345,10 @@ SELECT
m.maybe_prompt_token as `maybe_prompt_token: tokens::tokens::prompts::PromptToken`,
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,
media_file_cover_image.maybe_public_bucket_extension as maybe_file_cover_image_public_bucket_extension,
m.creator_set_visibility as `creator_set_visibility: enums::common::visibility::Visibility`,
model_weights.token as `maybe_model_weights_token: tokens::tokens::model_weights::ModelWeightToken`,
@@ -335,9 +356,9 @@ SELECT
model_weights.weights_type as `maybe_model_weights_type: enums::by_table::model_weights::weights_types::WeightsType`,
model_weights.weights_category as `maybe_model_weights_category: enums::by_table::model_weights::weights_category::WeightsCategory`,
cover_image.public_bucket_directory_hash as maybe_model_cover_image_public_bucket_hash,
cover_image.maybe_public_bucket_prefix as maybe_model_cover_image_public_bucket_prefix,
cover_image.maybe_public_bucket_extension as maybe_model_cover_image_public_bucket_extension,
model_weight_cover_image.public_bucket_directory_hash as maybe_model_cover_image_public_bucket_hash,
model_weight_cover_image.maybe_public_bucket_prefix as maybe_model_cover_image_public_bucket_prefix,
model_weight_cover_image.maybe_public_bucket_extension as maybe_model_cover_image_public_bucket_extension,
model_weight_creator.token as `maybe_model_weight_creator_user_token: tokens::tokens::users::UserToken`,
model_weight_creator.username as maybe_model_weight_creator_username,
@@ -360,8 +381,10 @@ LEFT OUTER JOIN users
ON m.maybe_creator_user_token = users.token
LEFT OUTER JOIN model_weights
ON m.maybe_origin_model_token = model_weights.token
LEFT OUTER JOIN media_files as cover_image
ON cover_image.token = model_weights.maybe_cover_image_media_file_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 media_files as model_weight_cover_image
ON model_weight_cover_image.token = model_weights.maybe_cover_image_media_file_token
LEFT OUTER JOIN users as model_weight_creator
ON model_weight_creator.token = model_weights.creator_user_token
LEFT OUTER JOIN entity_stats
@@ -2,8 +2,12 @@ use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
use utoipa::ToSchema;
use buckets::public::media_files::bucket_file_path::MediaFileBucketPath;
use tokens::tokens::media_files::MediaFileToken;
use tokens::tokens::model_weights::ModelWeightToken;
use crate::http_server::common_responses::weights_cover_image_details::WeightsDefaultCoverInfo;
use crate::util::placeholder_images::cover_images::default_cover_image_from_token::default_cover_image_from_token;
/// There are currently 25 cover images numbered 0 to 24 (0-indexed).
/// The original dataset was numbered 1 - 25, but I renamed 25 to 0.
@@ -49,6 +53,44 @@ impl MediaFileCoverImageDetails {
default_cover: MediaFileDefaultCover::from_token_str(token),
}
}
pub fn from_optional_db_fields(
token: &MediaFileToken,
maybe_cover_image_public_bucket_path: Option<&str>,
maybe_cover_image_public_bucket_prefix: Option<&str>,
maybe_cover_image_public_bucket_extension: Option<&str>,
) -> Self {
Self::from_optional_db_str_fields(
token.as_str(),
maybe_cover_image_public_bucket_path,
maybe_cover_image_public_bucket_prefix,
maybe_cover_image_public_bucket_extension
)
}
pub fn from_optional_db_str_fields(
token: &str,
maybe_cover_image_public_bucket_path: Option<&str>,
maybe_cover_image_public_bucket_prefix: Option<&str>,
maybe_cover_image_public_bucket_extension: Option<&str>,
) -> Self {
let maybe_bucket_path = maybe_cover_image_public_bucket_path
.map(|hash| MediaFileBucketPath::from_object_hash(
hash,
maybe_cover_image_public_bucket_prefix,
maybe_cover_image_public_bucket_extension
));
let maybe_cover_image_public_bucket_path = maybe_bucket_path
.map(|bucket_path| bucket_path
.get_full_object_path_str()
.to_string());
Self {
maybe_cover_image_public_bucket_path,
default_cover: MediaFileDefaultCover::from_token_str(token),
}
}
}
impl MediaFileDefaultCover {
@@ -288,7 +288,12 @@ pub async fn batch_get_media_files_handler(
maybe_engine_extension,
maybe_batch_token: result.maybe_batch_token,
public_bucket_path,
cover_image: MediaFileCoverImageDetails::from_token(&result.token),
cover_image: MediaFileCoverImageDetails::from_optional_db_fields(
&result.token,
result.maybe_file_cover_image_public_bucket_hash.as_deref(),
result.maybe_file_cover_image_public_bucket_prefix.as_deref(),
result.maybe_file_cover_image_public_bucket_extension.as_deref(),
),
maybe_title: result.maybe_title,
maybe_text_transcript: result.maybe_text_transcript,
maybe_model_weight_info: match result.maybe_model_weights_token {
@@ -304,7 +304,12 @@ async fn modern_media_file_lookup(
maybe_engine_extension,
maybe_batch_token: result.maybe_batch_token,
public_bucket_path,
cover_image: MediaFileCoverImageDetails::from_token(&result.token),
cover_image: MediaFileCoverImageDetails::from_optional_db_fields(
&result.token,
result.maybe_file_cover_image_public_bucket_hash.as_deref(),
result.maybe_file_cover_image_public_bucket_prefix.as_deref(),
result.maybe_file_cover_image_public_bucket_extension.as_deref(),
),
maybe_title: result.maybe_title,
maybe_text_transcript: result.maybe_text_transcript,
maybe_model_weight_info: match result.maybe_model_weights_token {