mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-15 14:22:14 +00:00
mod fields for TTS results
This commit is contained in:
1 parent
12466896e0
commit
02c1442e6c
2 files changed
+29
-3
No files matched your search
@@ -42,6 +42,14 @@ pub struct TtsResultRecordForResponse {
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
|
||||
pub maybe_moderator_fields: Option<TtsResultModeratorFields>,
|
||||
}
|
||||
|
||||
/// "Moderator-only fields" that we wouldn't want to expose to ordinary users.
|
||||
/// It's the web endpoint controller's responsibility to clear these for non-mods.
|
||||
#[derive(Serialize)]
|
||||
pub struct TtsResultModeratorFields {
|
||||
pub creator_ip_address: String,
|
||||
pub user_deleted_at: Option<DateTime<Utc>>,
|
||||
pub mod_deleted_at: Option<DateTime<Utc>>,
|
||||
}
|
||||
@@ -76,6 +84,8 @@ pub struct TtsResultRecordRaw {
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
|
||||
// Moderator fields
|
||||
pub creator_ip_address: String,
|
||||
pub user_deleted_at: Option<DateTime<Utc>>,
|
||||
pub mod_deleted_at: Option<DateTime<Utc>>,
|
||||
}
|
||||
@@ -136,8 +146,12 @@ pub async fn select_tts_result_by_token(
|
||||
|
||||
created_at: ir.created_at.clone(),
|
||||
updated_at: ir.updated_at.clone(),
|
||||
user_deleted_at: ir.user_deleted_at.clone(),
|
||||
mod_deleted_at: ir.mod_deleted_at.clone(),
|
||||
|
||||
maybe_moderator_fields: Some(TtsResultModeratorFields {
|
||||
creator_ip_address: ir.creator_ip_address.clone(),
|
||||
user_deleted_at: ir.user_deleted_at.clone(),
|
||||
mod_deleted_at: ir.mod_deleted_at.clone(),
|
||||
}),
|
||||
};
|
||||
|
||||
Ok(Some(ir_for_response))
|
||||
@@ -175,6 +189,8 @@ SELECT
|
||||
tts_results.duration_millis,
|
||||
tts_results.created_at,
|
||||
tts_results.updated_at,
|
||||
|
||||
tts_results.creator_ip_address,
|
||||
tts_results.user_deleted_at,
|
||||
tts_results.mod_deleted_at
|
||||
|
||||
@@ -226,6 +242,8 @@ SELECT
|
||||
tts_results.duration_millis,
|
||||
tts_results.created_at,
|
||||
tts_results.updated_at,
|
||||
|
||||
tts_results.creator_ip_address,
|
||||
tts_results.user_deleted_at,
|
||||
tts_results.mod_deleted_at
|
||||
|
||||
|
||||
@@ -78,11 +78,15 @@ pub async fn get_tts_inference_result_handler(
|
||||
})?;
|
||||
|
||||
let mut show_deleted_results = false;
|
||||
let mut is_moderator = false;
|
||||
|
||||
if let Some(user_session) = maybe_user_session {
|
||||
// NB: Moderators can see deleted results.
|
||||
// Original creators cannot see them (unless they're moderators!)
|
||||
show_deleted_results = user_session.can_delete_other_users_tts_results;
|
||||
// Moderators get to see all the fields.
|
||||
is_moderator = user_session.can_delete_other_users_tts_results
|
||||
|| user_session.can_edit_other_users_tts_models;
|
||||
}
|
||||
|
||||
let inference_result_query_result = select_tts_result_by_token(
|
||||
@@ -91,7 +95,7 @@ pub async fn get_tts_inference_result_handler(
|
||||
&server_state.mysql_pool
|
||||
).await;
|
||||
|
||||
let inference_result = match inference_result_query_result {
|
||||
let mut inference_result = match inference_result_query_result {
|
||||
Err(e) => {
|
||||
warn!("query error: {:?}", e);
|
||||
return Err(GetTtsResultError::ServerError);
|
||||
@@ -100,6 +104,10 @@ pub async fn get_tts_inference_result_handler(
|
||||
Ok(Some(inference_result)) => inference_result,
|
||||
};
|
||||
|
||||
if !is_moderator {
|
||||
inference_result.maybe_moderator_fields = None;
|
||||
}
|
||||
|
||||
let response = GetTtsResultSuccessResponse {
|
||||
success: true,
|
||||
result: inference_result,
|
||||
|
||||
Reference in new issue
Block a user