mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 09:48:44 +00:00
Goodbye, 'EntityVisibility'
This commit is contained in:
1 parent
68f2e46540
commit
66bb76e60f
20 files changed
+46
-110
No files matched your search
Generated
+2
@@ -1624,6 +1624,7 @@ dependencies = [
|
||||
"database_queries",
|
||||
"dotenv",
|
||||
"easyenv",
|
||||
"enums",
|
||||
"google_drive_common",
|
||||
"hostname",
|
||||
"hyper 0.14.14",
|
||||
@@ -5569,6 +5570,7 @@ dependencies = [
|
||||
"container_common",
|
||||
"database_queries",
|
||||
"dotenv",
|
||||
"enums",
|
||||
"hmac 0.10.1",
|
||||
"http_server_common",
|
||||
"jwt",
|
||||
|
||||
+4
-4
@@ -4,7 +4,7 @@ use container_common::anyhow_result::AnyhowResult;
|
||||
use crate::column_types::job_status::JobStatus;
|
||||
use crate::queries::generic_download::job::_keys::GenericDownloadJobId;
|
||||
use crate::tokens::Tokens;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::generic_download_type::GenericDownloadType;
|
||||
use sqlx::MySqlPool;
|
||||
use std::path::Path;
|
||||
@@ -18,7 +18,7 @@ pub struct AvailableDownloadJob {
|
||||
|
||||
pub creator_user_token: String,
|
||||
pub creator_ip_address: String,
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
pub download_type: GenericDownloadType,
|
||||
pub download_url: String,
|
||||
@@ -45,7 +45,7 @@ SELECT
|
||||
|
||||
creator_user_token,
|
||||
creator_ip_address,
|
||||
creator_set_visibility as `creator_set_visibility: reusable_types::db::enums::entity_visibility::EntityVisibility`,
|
||||
creator_set_visibility as `creator_set_visibility: enums::core::visibility::Visibility`,
|
||||
|
||||
download_type as `download_type: reusable_types::db::enums::generic_download_type::GenericDownloadType`,
|
||||
download_url,
|
||||
@@ -108,7 +108,7 @@ struct AvailableDownloadJobRawInternal {
|
||||
|
||||
pub creator_user_token: String,
|
||||
pub creator_ip_address: String,
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
pub download_type: GenericDownloadType,
|
||||
pub download_url: String,
|
||||
|
||||
-1
@@ -2,7 +2,6 @@ use anyhow::anyhow;
|
||||
use chrono::{DateTime, Utc};
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use log::warn;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use reusable_types::db::enums::generic_download_type::GenericDownloadType;
|
||||
use sqlx::MySqlPool;
|
||||
use tokens::jobs::download::DownloadJobToken;
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
use anyhow::anyhow;
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::generic_download_type::GenericDownloadType;
|
||||
use sqlx::MySqlPool;
|
||||
use tokens::jobs::download::DownloadJobToken;
|
||||
@@ -13,7 +13,7 @@ pub struct Args <'a> {
|
||||
pub title: &'a str,
|
||||
pub creator_user_token: &'a str,
|
||||
pub creator_ip_address: &'a str,
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
pub mysql_pool: &'a MySqlPool,
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -4,7 +4,7 @@ use container_common::anyhow_result::AnyhowResult;
|
||||
use crate::column_types::job_status::JobStatus;
|
||||
use crate::helpers::boolean_converters::i8_to_bool;
|
||||
use crate::queries::generic_inference::job::_keys::GenericInferenceJobId;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::generic_inference_type::GenericInferenceType;
|
||||
use sqlx::MySqlPool;
|
||||
use std::path::Path;
|
||||
@@ -25,7 +25,7 @@ pub struct AvailableInferenceJob {
|
||||
// User information to propagate downstream
|
||||
pub maybe_creator_user_token: Option<String>,
|
||||
pub creator_ip_address: String,
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
// Job information
|
||||
pub status: JobStatus,
|
||||
@@ -58,7 +58,7 @@ SELECT
|
||||
|
||||
maybe_creator_user_token,
|
||||
creator_ip_address,
|
||||
creator_set_visibility as `creator_set_visibility: reusable_types::db::enums::entity_visibility::EntityVisibility`,
|
||||
creator_set_visibility as `creator_set_visibility: enums::core::visibility::Visibility`,
|
||||
|
||||
status as `status: crate::column_types::job_status::JobStatus`,
|
||||
|
||||
@@ -135,7 +135,7 @@ struct AvailableInferenceJobRawInternal {
|
||||
// User information to propagate downstream
|
||||
pub maybe_creator_user_token: Option<String>,
|
||||
pub creator_ip_address: String,
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
// Job information
|
||||
pub status: JobStatus,
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
use anyhow::anyhow;
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::generic_inference_type::GenericInferenceType;
|
||||
use sqlx::MySqlPool;
|
||||
use tokens::jobs::inference::InferenceJobToken;
|
||||
@@ -16,7 +16,7 @@ pub struct Args <'a> {
|
||||
|
||||
pub maybe_creator_user_token: Option<&'a str>,
|
||||
pub creator_ip_address: &'a str,
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
pub mysql_pool: &'a MySqlPool,
|
||||
}
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ use chrono::Utc;
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use crate::queries::generic_download::job::list_available_generic_download_jobs::AvailableDownloadJob;
|
||||
use crate::tokens::Tokens;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use enums::core::visibility::Visibility;
|
||||
use sqlx::MySqlPool;
|
||||
use std::path::Path;
|
||||
|
||||
@@ -16,7 +16,7 @@ pub struct Args<'a, P: AsRef<Path>> {
|
||||
|
||||
pub creator_user_token: &'a str,
|
||||
pub creator_ip_address: &'a str,
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
pub private_bucket_hash: &'a str,
|
||||
pub private_bucket_object_name: P,
|
||||
|
||||
+7
-7
@@ -2,8 +2,8 @@ use anyhow::anyhow;
|
||||
use chrono::{DateTime, Utc};
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use crate::helpers::boolean_converters::i8_to_bool;
|
||||
use enums::core::visibility::Visibility;
|
||||
use log::{info, warn, log};
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use sqlx::error::DatabaseError;
|
||||
use sqlx::error::Error::Database;
|
||||
use sqlx::mysql::MySqlDatabaseError;
|
||||
@@ -38,8 +38,8 @@ pub struct UserProfileResult {
|
||||
pub website_url: Option<String>,
|
||||
|
||||
// Preferences; NB: included for get_profile_handler legacy reasons
|
||||
pub preferred_tts_result_visibility: EntityVisibility,
|
||||
pub preferred_w2l_result_visibility: EntityVisibility,
|
||||
pub preferred_tts_result_visibility: Visibility,
|
||||
pub preferred_w2l_result_visibility: Visibility,
|
||||
|
||||
pub created_at: DateTime<Utc>,
|
||||
|
||||
@@ -75,8 +75,8 @@ struct RawUserProfileRecord {
|
||||
created_at: DateTime<Utc>,
|
||||
|
||||
// Preferences; NB: included for get_profile_handler legacy reasons
|
||||
preferred_tts_result_visibility: EntityVisibility,
|
||||
preferred_w2l_result_visibility: EntityVisibility,
|
||||
preferred_tts_result_visibility: Visibility,
|
||||
preferred_w2l_result_visibility: Visibility,
|
||||
|
||||
// Mod fields
|
||||
is_banned: i8,
|
||||
@@ -109,8 +109,8 @@ SELECT
|
||||
profile_rendered_html,
|
||||
user_role_slug,
|
||||
disable_gravatar,
|
||||
preferred_tts_result_visibility as `preferred_tts_result_visibility: reusable_types::db::enums::entity_visibility::EntityVisibility`,
|
||||
preferred_w2l_result_visibility as `preferred_w2l_result_visibility: reusable_types::db::enums::entity_visibility::EntityVisibility`,
|
||||
preferred_tts_result_visibility as `preferred_tts_result_visibility: enums::core::visibility::Visibility`,
|
||||
preferred_w2l_result_visibility as `preferred_w2l_result_visibility: enums::core::visibility::Visibility`,
|
||||
discord_username,
|
||||
twitch_username,
|
||||
twitter_username,
|
||||
|
||||
@@ -7,8 +7,8 @@ use anyhow::anyhow;
|
||||
use chrono::{DateTime, Utc};
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use crate::helpers::boolean_converters::i8_to_bool;
|
||||
use enums::core::visibility::Visibility;
|
||||
use log::warn;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use sqlx::MySqlPool;
|
||||
|
||||
@@ -31,7 +31,7 @@ pub struct VocoderModelRecord {
|
||||
pub creator_display_name: String,
|
||||
pub creator_gravatar_hash: String,
|
||||
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
@@ -137,7 +137,7 @@ SELECT
|
||||
vocoder.is_mod_disabled_from_author_use,
|
||||
vocoder.is_mod_author_editing_locked,
|
||||
|
||||
vocoder.creator_set_visibility as `creator_set_visibility: reusable_types::db::enums::entity_visibility::EntityVisibility`,
|
||||
vocoder.creator_set_visibility as `creator_set_visibility: enums::core::visibility::Visibility`,
|
||||
|
||||
vocoder.created_at,
|
||||
vocoder.updated_at,
|
||||
@@ -185,7 +185,7 @@ SELECT
|
||||
vocoder.is_mod_disabled_from_author_use,
|
||||
vocoder.is_mod_author_editing_locked,
|
||||
|
||||
vocoder.creator_set_visibility as `creator_set_visibility: reusable_types::db::enums::entity_visibility::EntityVisibility`,
|
||||
vocoder.creator_set_visibility as `creator_set_visibility: enums::core::visibility::Visibility`,
|
||||
|
||||
vocoder.created_at,
|
||||
vocoder.updated_at,
|
||||
@@ -224,7 +224,7 @@ struct InternalVocoderModelRecordRaw {
|
||||
pub creator_display_name: String,
|
||||
pub creator_gravatar_hash: String,
|
||||
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
use anyhow::anyhow;
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use crate::tokens::Tokens;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use sqlx::MySqlPool;
|
||||
use std::path::Path;
|
||||
@@ -22,7 +22,7 @@ pub struct Args<'a, P: AsRef<Path>> {
|
||||
|
||||
pub creator_user_token: &'a str,
|
||||
pub creator_ip_address: &'a str,
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
pub private_bucket_hash: &'a str,
|
||||
pub private_bucket_object_name: P,
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
use anyhow::anyhow;
|
||||
use chrono::Utc;
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use enums::core::visibility::Visibility;
|
||||
use sqlx::MySqlPool;
|
||||
use std::path::Path;
|
||||
use tokens::voice_conversion::model::VoiceConversionModelToken;
|
||||
@@ -15,7 +15,7 @@ pub struct Args<'a, P: AsRef<Path>> {
|
||||
|
||||
pub creator_user_token: &'a str,
|
||||
pub creator_ip_address: &'a str,
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
pub private_bucket_hash: &'a str,
|
||||
pub private_bucket_object_name: P,
|
||||
|
||||
@@ -17,6 +17,7 @@ path = "src/lib.rs"
|
||||
# Internal
|
||||
container_common = { path = "../../lib/container_common" }
|
||||
database_queries = { path = "../../lib/database_queries" }
|
||||
enums = { path = "../../types/enums" }
|
||||
http_server_common = { path = "../../lib/http_server_common" }
|
||||
reusable_types = { path = "../../types/reusable_types" }
|
||||
tokens = { path = "../../types/tokens" }
|
||||
|
||||
@@ -12,11 +12,11 @@ use crate::utils::session_checker::SessionChecker;
|
||||
use database_queries::queries::users::user_badges::list_user_badges::UserBadgeForList;
|
||||
use database_queries::queries::users::user_badges::list_user_badges::list_user_badges;
|
||||
use database_queries::queries::users::user_profiles::get_user_profile_by_username::get_user_profile_by_username_from_connection;
|
||||
use enums::core::visibility::Visibility;
|
||||
use http_server_common::request::get_request_header_optional::get_request_header_optional;
|
||||
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
|
||||
use http_server_common::util::timer::MultiBenchmarkingTimer;
|
||||
use log::warn;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use sqlx::MySqlPool;
|
||||
use std::fmt;
|
||||
use tokens::users::user::UserToken;
|
||||
@@ -34,8 +34,8 @@ pub struct UserProfileRecordForResponse {
|
||||
pub profile_rendered_html: String,
|
||||
pub user_role_slug: String,
|
||||
pub disable_gravatar: bool,
|
||||
pub preferred_tts_result_visibility: EntityVisibility,
|
||||
pub preferred_w2l_result_visibility: EntityVisibility,
|
||||
pub preferred_tts_result_visibility: Visibility,
|
||||
pub preferred_w2l_result_visibility: Visibility,
|
||||
pub discord_username: Option<String>,
|
||||
pub twitch_username: Option<String>,
|
||||
pub twitter_username: Option<String>,
|
||||
|
||||
@@ -18,6 +18,7 @@ path = "src/main.rs"
|
||||
config = { path = "../../../lib/config" }
|
||||
container_common = { path = "../../../lib/container_common" }
|
||||
database_queries = { path = "../../../lib/database_queries" }
|
||||
enums = { path = "../../../types/enums" }
|
||||
google_drive_common = { path = "../../../lib/google_drive_common" }
|
||||
jobs_common = { path = "../../../lib/jobs_common" }
|
||||
reusable_types = { path = "../../../types/reusable_types" }
|
||||
|
||||
@@ -8,9 +8,9 @@ use crate::JobState;
|
||||
use crate::job_steps::job_results::JobResults;
|
||||
use database_queries::queries::generic_download::job::list_available_generic_download_jobs::AvailableDownloadJob;
|
||||
use database_queries::queries::voice_conversion::voice_conversion_models::insert_voice_conversion_model_from_download_job::{Args, insert_voice_conversion_model_from_download_job};
|
||||
use enums::core::visibility::Visibility;
|
||||
use jobs_common::redis_job_status_logger::RedisJobStatusLogger;
|
||||
use log::{info, warn};
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::path::PathBuf;
|
||||
@@ -101,7 +101,7 @@ pub async fn process_softvc_model<'a, 'b>(
|
||||
file_size_bytes: file_metadata.file_size_bytes,
|
||||
creator_user_token: &job.creator_user_token,
|
||||
creator_ip_address: &job.creator_ip_address,
|
||||
creator_set_visibility: EntityVisibility::Public, // TODO: All models default to public at start
|
||||
creator_set_visibility: Visibility::Public, // TODO: All models default to public at start
|
||||
private_bucket_hash: &private_bucket_hash,
|
||||
private_bucket_object_name: &model_bucket_path,
|
||||
mysql_pool: &job_state.mysql_pool,
|
||||
|
||||
@@ -9,9 +9,9 @@ use crate::job_steps::job_results::JobResults;
|
||||
use database_queries::queries::generic_download::job::list_available_generic_download_jobs::AvailableDownloadJob;
|
||||
use database_queries::queries::tts::tts_models::insert_tts_model_from_download_job::insert_tts_model_from_download_job;
|
||||
use database_queries::queries::tts::tts_models::insert_tts_model_from_download_job;
|
||||
use enums::core::visibility::Visibility;
|
||||
use jobs_common::redis_job_status_logger::RedisJobStatusLogger;
|
||||
use log::{info, warn};
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::path::PathBuf;
|
||||
@@ -103,7 +103,7 @@ pub async fn process_tacotron_model<'a, 'b>(
|
||||
file_size_bytes: file_metadata.file_size_bytes,
|
||||
creator_user_token: &job.creator_user_token,
|
||||
creator_ip_address: &job.creator_ip_address,
|
||||
creator_set_visibility: EntityVisibility::Public, // TODO: All models default to public at start
|
||||
creator_set_visibility: Visibility::Public, // TODO: All models default to public at start
|
||||
private_bucket_hash: &private_bucket_hash,
|
||||
private_bucket_object_name: &model_bucket_path,
|
||||
mysql_pool: &job_state.mysql_pool,
|
||||
|
||||
+3
-3
@@ -12,11 +12,11 @@ use crate::validations::model_uploads::validate_model_title;
|
||||
use crate::validations::validate_idempotency_token_format::validate_idempotency_token_format;
|
||||
use database_queries::queries::generic_download::web::insert_generic_download_job::{Args, insert_generic_download_job};
|
||||
use database_queries::tokens::Tokens;
|
||||
use enums::core::visibility::Visibility;
|
||||
use http_server_common::request::get_request_ip::get_request_ip;
|
||||
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
|
||||
use log::{info, warn, log};
|
||||
use regex::Regex;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use reusable_types::db::enums::generic_download_type::GenericDownloadType;
|
||||
use sqlx::error::DatabaseError;
|
||||
use sqlx::error::Error::Database;
|
||||
@@ -35,7 +35,7 @@ pub struct EnqueueGenericDownloadRequest {
|
||||
/// Not all upload types will have an associated visibility, so supplying this is optional.
|
||||
/// If an upload type supports it and it is not supplied, assume a reasonable default or user
|
||||
/// setting.
|
||||
creator_set_visibility: Option<EntityVisibility>,
|
||||
creator_set_visibility: Option<Visibility>,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
@@ -107,7 +107,7 @@ pub async fn enqueue_generic_download_handler(
|
||||
let download_url = request.download_url.trim().to_string();
|
||||
|
||||
let creator_set_visibility = request.creator_set_visibility
|
||||
.unwrap_or(EntityVisibility::Public);
|
||||
.unwrap_or(Visibility::Public);
|
||||
|
||||
if let Err(reason) = validate_idempotency_token_format(&uuid) {
|
||||
return Err(EnqueueGenericDownloadError::BadInput(reason));
|
||||
|
||||
+2
-2
@@ -11,8 +11,8 @@ use chrono::{DateTime, Utc};
|
||||
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
|
||||
use crate::server_state::ServerState;
|
||||
use database_queries::queries::vocoder::get_vocoder_model::get_vocoder_model_by_token;
|
||||
use enums::core::visibility::Visibility;
|
||||
use log::warn;
|
||||
use reusable_types::db::enums::entity_visibility::EntityVisibility;
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
@@ -49,7 +49,7 @@ pub struct Vocoder {
|
||||
pub creator_display_name: String,
|
||||
pub creator_gravatar_hash: String,
|
||||
|
||||
pub creator_set_visibility: EntityVisibility,
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
/// Used in various database tables (as enums! careful!) and the HTTP API to convey
|
||||
/// how the associated entity should be made visible to the public.
|
||||
///
|
||||
/// DO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.
|
||||
#[derive(Clone, Copy, Eq, PartialEq, Debug, Deserialize, Serialize, sqlx::Type)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
#[sqlx(rename_all = "lowercase")]
|
||||
pub enum EntityVisibility {
|
||||
/// Public entities are able to be listed in public lists.
|
||||
/// It does not mean that they necessarily will be (eg. they could be "mod unapproved" or deleted).
|
||||
Public,
|
||||
/// Hidden entities are not shown in public lists, but the URL to them may be given out freely.
|
||||
/// They are available to non-logged-in users as long as they have the URL.
|
||||
Hidden,
|
||||
/// Private entities should only be available to the creator, a list of approved users, and
|
||||
/// website moderation staff.
|
||||
Private,
|
||||
}
|
||||
|
||||
/// NB: Legacy API for older code.
|
||||
impl EntityVisibility {
|
||||
pub fn to_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Public => "public",
|
||||
Self::Hidden => "hidden",
|
||||
Self::Private => "private",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_str(value: &str) -> Result<Self, String> {
|
||||
match value {
|
||||
"public" => Ok(Self::Public),
|
||||
"hidden" => Ok(Self::Hidden),
|
||||
"private" => Ok(Self::Private),
|
||||
_ => Err(format!("invalid value: {:?}", value)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::db::enums::entity_visibility::EntityVisibility;
|
||||
use crate::test_helpers::assert_serialization;
|
||||
|
||||
#[test]
|
||||
fn test_serialization() {
|
||||
assert_serialization(EntityVisibility::Public, "public");
|
||||
assert_serialization(EntityVisibility::Hidden, "hidden");
|
||||
assert_serialization(EntityVisibility::Private, "private");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_to_str() {
|
||||
assert_eq!(EntityVisibility::Public.to_str(), "public");
|
||||
assert_eq!(EntityVisibility::Hidden.to_str(), "hidden");
|
||||
assert_eq!(EntityVisibility::Private.to_str(), "private");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_from_str() {
|
||||
assert_eq!(EntityVisibility::from_str("public").unwrap(), EntityVisibility::Public);
|
||||
assert_eq!(EntityVisibility::from_str("hidden").unwrap(), EntityVisibility::Hidden);
|
||||
assert_eq!(EntityVisibility::from_str("private").unwrap(), EntityVisibility::Private);
|
||||
assert!(EntityVisibility::from_str("foo").is_err());
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
//! This is meant to handle `enum` or `enum`-like columns in the database.
|
||||
//! These are not Rust-like enums (sum types) that can have internal payloads.
|
||||
|
||||
pub mod entity_visibility;
|
||||
pub mod generic_download_type;
|
||||
pub mod generic_inference_type;
|
||||
pub mod media_upload_type;
|
||||
|
||||
Reference in new issue
Block a user