mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-06 10:11:31 +00:00
add cover images to get and batch get media files
This commit is contained in:
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
|
||||
|
||||
+42
@@ -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 {
|
||||
|
||||
+6
-1
@@ -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 {
|
||||
|
||||
+6
-1
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user