mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 09:48:44 +00:00
Merge pull request #110 from storytold/echelon-list-dataset-samples
Enrich list dataset samples query + endpoint with bucket information
This commit is contained in:
3 files changed
+66
-21
No files matched your search
+40
-8
@@ -4,14 +4,24 @@ use log::warn;
|
||||
use sqlx::{MySql, MySqlPool};
|
||||
use sqlx::pool::PoolConnection;
|
||||
|
||||
use enums::by_table::media_files::media_file_type::MediaFileType;
|
||||
use errors::AnyhowResult;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
use tokens::tokens::users::UserToken;
|
||||
use tokens::tokens::zs_voice_dataset_samples::ZsVoiceDatasetSampleToken;
|
||||
use tokens::tokens::zs_voice_datasets::ZsVoiceDatasetToken;
|
||||
|
||||
pub struct DatasetSampleRecordForList {
|
||||
pub token: ZsVoiceDatasetSampleToken,
|
||||
pub dataset_token: ZsVoiceDatasetToken,
|
||||
pub sample_token: ZsVoiceDatasetSampleToken,
|
||||
|
||||
pub media_file_token: MediaFileToken,
|
||||
pub media_type: MediaFileType,
|
||||
|
||||
// Bucket path, prefix, and extension are all that are required to construct a path to
|
||||
// download media from cloud buckets.
|
||||
pub public_bucket_directory_hash: String,
|
||||
pub maybe_public_bucket_prefix: Option<String>,
|
||||
pub maybe_public_bucket_extension: Option<String>,
|
||||
|
||||
pub maybe_creator_user_token: Option<UserToken>,
|
||||
|
||||
@@ -21,7 +31,7 @@ pub struct DatasetSampleRecordForList {
|
||||
}
|
||||
|
||||
|
||||
pub async fn list_samples(
|
||||
pub async fn list_dataset_samples_for_dataset_token(
|
||||
dataset_token: &ZsVoiceDatasetToken,
|
||||
can_see_deleted: bool,
|
||||
mysql_pool: &MySqlPool,
|
||||
@@ -65,8 +75,12 @@ pub async fn list_samples_by_dataset_token_with_connection(
|
||||
Ok(records.into_iter()
|
||||
.map(|record| {
|
||||
DatasetSampleRecordForList {
|
||||
token: record.token,
|
||||
dataset_token: record.dataset_token,
|
||||
sample_token: record.token,
|
||||
media_file_token: record.media_file_token,
|
||||
media_type: record.media_type,
|
||||
public_bucket_directory_hash: record.public_bucket_directory_hash,
|
||||
maybe_public_bucket_prefix: record.maybe_public_bucket_prefix,
|
||||
maybe_public_bucket_extension: record.maybe_public_bucket_extension,
|
||||
maybe_creator_user_token: record.maybe_creator_user_token,
|
||||
created_at: record.created_at,
|
||||
updated_at: record.updated_at,
|
||||
@@ -87,11 +101,17 @@ async fn list_samples_by_dataset_token(
|
||||
r#"
|
||||
SELECT
|
||||
zds.token as `token: tokens::tokens::zs_voice_dataset_samples::ZsVoiceDatasetSampleToken`,
|
||||
zds.dataset_token as `dataset_token: tokens::tokens::zs_voice_datasets::ZsVoiceDatasetToken`,
|
||||
zds.media_file_token as `media_file_token: tokens::tokens::media_files::MediaFileToken`,
|
||||
m.media_type as `media_type: enums::by_table::media_files::media_file_type::MediaFileType`,
|
||||
m.public_bucket_directory_hash,
|
||||
m.maybe_public_bucket_prefix,
|
||||
m.maybe_public_bucket_extension,
|
||||
zds.maybe_creator_user_token as `maybe_creator_user_token: tokens::tokens::users::UserToken`,
|
||||
zds.created_at,
|
||||
zds.updated_at
|
||||
FROM zs_voice_dataset_samples as zds
|
||||
JOIN media_files as m
|
||||
ON zds.media_file_token = m.token
|
||||
WHERE zds.dataset_token = ?
|
||||
AND zds.user_deleted_at IS NULL
|
||||
AND zds.mod_deleted_at IS NULL
|
||||
@@ -104,11 +124,17 @@ async fn list_samples_by_dataset_token(
|
||||
r#"
|
||||
SELECT
|
||||
zds.token as `token: tokens::tokens::zs_voice_dataset_samples::ZsVoiceDatasetSampleToken`,
|
||||
zds.dataset_token as `dataset_token: tokens::tokens::zs_voice_datasets::ZsVoiceDatasetToken`,
|
||||
zds.media_file_token as `media_file_token: tokens::tokens::media_files::MediaFileToken`,
|
||||
m.media_type as `media_type: enums::by_table::media_files::media_file_type::MediaFileType`,
|
||||
m.public_bucket_directory_hash,
|
||||
m.maybe_public_bucket_prefix,
|
||||
m.maybe_public_bucket_extension,
|
||||
zds.maybe_creator_user_token as `maybe_creator_user_token: tokens::tokens::users::UserToken`,
|
||||
zds.created_at,
|
||||
zds.updated_at
|
||||
FROM zs_voice_dataset_samples as zds
|
||||
JOIN media_files as m
|
||||
ON zds.media_file_token = m.token
|
||||
WHERE zds.dataset_token = ?
|
||||
"#,
|
||||
dataset_token
|
||||
@@ -121,7 +147,13 @@ async fn list_samples_by_dataset_token(
|
||||
|
||||
struct InternalRawDatasetSampleRecordForList {
|
||||
token: ZsVoiceDatasetSampleToken,
|
||||
dataset_token: ZsVoiceDatasetToken,
|
||||
|
||||
media_file_token: MediaFileToken,
|
||||
media_type: MediaFileType,
|
||||
|
||||
public_bucket_directory_hash: String,
|
||||
maybe_public_bucket_prefix: Option<String>,
|
||||
maybe_public_bucket_extension: Option<String>,
|
||||
|
||||
maybe_creator_user_token: Option<UserToken>,
|
||||
|
||||
@@ -2,4 +2,4 @@ pub mod delete_sample;
|
||||
pub mod get_dataset_sample;
|
||||
pub mod get_dataset_sample_by_uuid;
|
||||
pub mod insert_dataset_sample_and_media_file;
|
||||
pub mod list_dataset_samples;
|
||||
pub mod list_dataset_samples_for_dataset_token;
|
||||
+25
-12
@@ -4,17 +4,29 @@ use actix_web::{HttpRequest, HttpResponse, web};
|
||||
use actix_web::error::ResponseError;
|
||||
use actix_web::http::StatusCode;
|
||||
use chrono::{DateTime, Utc};
|
||||
use log::warn;
|
||||
|
||||
use log::{info, warn};
|
||||
use mysql_queries::queries::voice_designer::voice_samples::list_dataset_samples::list_samples;
|
||||
use enums::by_table::media_files::media_file_type::MediaFileType;
|
||||
use mysql_queries::queries::voice_designer::voice_samples::list_dataset_samples_for_dataset_token::list_dataset_samples_for_dataset_token;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
use tokens::tokens::users::UserToken;
|
||||
use tokens::tokens::zs_voice_dataset_samples::ZsVoiceDatasetSampleToken;
|
||||
use tokens::tokens::zs_voice_datasets::ZsVoiceDatasetToken;
|
||||
|
||||
use crate::server_state::ServerState;
|
||||
|
||||
#[derive(Serialize, Clone)]
|
||||
pub struct ZsSampleRecordForResponse {
|
||||
sample_token: String,
|
||||
dataset_token: String,
|
||||
maybe_creator_user_token: Option<String>,
|
||||
sample_token: ZsVoiceDatasetSampleToken,
|
||||
|
||||
media_file_token: MediaFileToken,
|
||||
media_type: MediaFileType,
|
||||
|
||||
public_bucket_directory_hash: String,
|
||||
maybe_public_bucket_prefix: Option<String>,
|
||||
maybe_public_bucket_extension: Option<String>,
|
||||
|
||||
maybe_creator_user_token: Option<UserToken>,
|
||||
|
||||
created_at: DateTime<Utc>,
|
||||
updated_at: DateTime<Utc>,
|
||||
@@ -76,7 +88,7 @@ pub async fn list_samples_by_dataset_handler(
|
||||
let dataset_token = ZsVoiceDatasetToken(path.dataset_token.clone());
|
||||
let is_mod = user_session.can_ban_users;
|
||||
|
||||
let query_results = list_samples(
|
||||
let query_results = list_dataset_samples_for_dataset_token(
|
||||
&dataset_token,
|
||||
is_mod,
|
||||
&server_state.mysql_pool
|
||||
@@ -96,12 +108,13 @@ pub async fn list_samples_by_dataset_handler(
|
||||
let samples = samples
|
||||
.into_iter()
|
||||
.map(|sample| ZsSampleRecordForResponse {
|
||||
sample_token: sample.token.to_string(),
|
||||
dataset_token: sample.dataset_token.to_string(),
|
||||
maybe_creator_user_token: match sample.maybe_creator_user_token {
|
||||
Some(user_token) => Some(user_token.to_string()),
|
||||
None => None,
|
||||
},
|
||||
sample_token: sample.sample_token,
|
||||
media_file_token: sample.media_file_token,
|
||||
media_type: sample.media_type,
|
||||
public_bucket_directory_hash: sample.public_bucket_directory_hash,
|
||||
maybe_public_bucket_prefix: sample.maybe_public_bucket_prefix,
|
||||
maybe_public_bucket_extension: sample.maybe_public_bucket_extension,
|
||||
maybe_creator_user_token: sample.maybe_creator_user_token,
|
||||
created_at: sample.created_at,
|
||||
updated_at: sample.updated_at,
|
||||
})
|
||||
|
||||
Reference in new issue
Block a user