hack record visibility

This commit is contained in:
Brandon Thomas committed 2021-07-11 19:14:26 -04:00
1 parent 6bcd1033a1
commit cc959f88fd
2 files changed
+28

No files matched your search

+12
View File
@@ -1,5 +1,8 @@
//! These are columns where users can control the visibility of their data.
use anyhow::anyhow;
use crate::util::anyhow_result::AnyhowResult;
/// To use this in a query, the query must have type annotations.
/// See: https://www.gitmemory.com/issue/launchbadge/sqlx/1241/847154375
/// eg. preferred_tts_result_visibility as `preferred_tts_result_visibility: crate::database::enums::record_visibility::RecordVisibility`
@@ -20,4 +23,13 @@ impl RecordVisibility {
RecordVisibility::Private => "private",
}
}
pub fn from_str(record_visibility: &str) -> AnyhowResult<Self> {
match record_visibility {
"public" => Ok(RecordVisibility::Public),
"hidden" => Ok(RecordVisibility::Hidden),
"private" => Ok(RecordVisibility::Private),
_ => Err(anyhow!("invalid value: {:?}", record_visibility)),
}
}
}
@@ -1,5 +1,6 @@
use anyhow::anyhow;
use chrono::{DateTime, Utc};
use crate::database::enums::record_visibility::RecordVisibility;
use crate::shared_constants::DEFAULT_MYSQL_QUERY_RESULT_PAGE_SIZE;
use crate::util::anyhow_result::AnyhowResult;
use log::{warn, info};
@@ -34,6 +35,8 @@ pub struct TtsInferenceRecordForList {
pub file_size_bytes: u32,
pub duration_millis: u32,
pub visibility: RecordVisibility,
//pub model_is_mod_approved: bool, // converted
//pub maybe_mod_user_token: Option<String>,
@@ -125,6 +128,7 @@ impl ListTtsResultsQueryBuilder {
maybe_creator_result_id: r.maybe_creator_result_id.map(|v| v as u64).clone(),
file_size_bytes: if r.file_size_bytes > 0 { r.file_size_bytes as u32 } else { 0 },
duration_millis: if r.duration_millis > 0 { r.duration_millis as u32 } else { 0 },
visibility: RecordVisibility::from_str(&r.creator_set_visibility).unwrap_or(RecordVisibility::Public),
created_at: r.created_at,
updated_at: r.updated_at,
}
@@ -172,6 +176,12 @@ impl ListTtsResultsQueryBuilder {
}
pub fn build_query_string(&self) -> String {
// TODO: I haven't figured out how to get field name disambiguation and type coercion working here.
// (1) tts_results.creator_set_visibility `creator_set_visibility: crate::database::enums::record_visibility::RecordVisibility`,
// Query error: no column found for name: creator_set_visibility
// (2) creator_set_visibility `creator_set_visibility: crate::database::enums::record_visibility::RecordVisibility`,
// Column 'creator_set_visibility' in field list is ambiguous
// TODO/NB: Unfortunately SQLx can't statically typecheck this query
let mut query = r#"
SELECT
@@ -190,6 +200,9 @@ SELECT
tts_results.file_size_bytes,
tts_results.duration_millis,
tts_results.creator_set_visibility,
tts_results.created_at,
tts_results.updated_at
@@ -288,6 +301,9 @@ pub struct RawInternalTtsRecord {
pub file_size_bytes : i64,
pub duration_millis : i64,
pub creator_set_visibility: String,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}