From 66bb76e60f8eaf040b64caa85e71720e5b4542ce Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 20 Dec 2022 02:50:17 -0500 Subject: [PATCH] Goodbye, 'EntityVisibility' --- Cargo.lock | 2 + .../list_available_generic_download_jobs.rs | 8 +-- .../web/get_generic_download_job_status.rs | 1 - .../web/insert_generic_download_job.rs | 4 +- .../list_available_generic_inference_jobs.rs | 8 +-- .../web/insert_generic_inference_job.rs | 4 +- .../insert_tts_model_from_download_job.rs | 4 +- .../get_user_profile_by_username.rs | 14 ++-- .../src/queries/vocoder/get_vocoder_model.rs | 10 +-- .../queries/vocoder/insert_vocoder_model.rs | 4 +- ...oice_conversion_model_from_download_job.rs | 4 +- crates/plugins/users/Cargo.toml | 1 + .../src/endpoints/get_profile_handler.rs | 6 +- crates/service/job/download_job/Cargo.toml | 1 + .../job_types/softvc/process_softvc_model.rs | 4 +- .../tacotron/process_tacotron_model.rs | 4 +- .../download_job/enqueue_generic_download.rs | 6 +- .../endpoints/vocoders/get_vocoder.rs | 4 +- .../src/db/enums/entity_visibility.rs | 66 ------------------- .../types/reusable_types/src/db/enums/mod.rs | 1 - 20 files changed, 46 insertions(+), 110 deletions(-) delete mode 100644 crates/types/reusable_types/src/db/enums/entity_visibility.rs diff --git a/Cargo.lock b/Cargo.lock index 98bfced272..1996857525 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", diff --git a/crates/lib/database_queries/src/queries/generic_download/job/list_available_generic_download_jobs.rs b/crates/lib/database_queries/src/queries/generic_download/job/list_available_generic_download_jobs.rs index 9eeb944c39..d1cb02cf9d 100644 --- a/crates/lib/database_queries/src/queries/generic_download/job/list_available_generic_download_jobs.rs +++ b/crates/lib/database_queries/src/queries/generic_download/job/list_available_generic_download_jobs.rs @@ -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, diff --git a/crates/lib/database_queries/src/queries/generic_download/web/get_generic_download_job_status.rs b/crates/lib/database_queries/src/queries/generic_download/web/get_generic_download_job_status.rs index 30e31960ec..2361a2da00 100644 --- a/crates/lib/database_queries/src/queries/generic_download/web/get_generic_download_job_status.rs +++ b/crates/lib/database_queries/src/queries/generic_download/web/get_generic_download_job_status.rs @@ -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; diff --git a/crates/lib/database_queries/src/queries/generic_download/web/insert_generic_download_job.rs b/crates/lib/database_queries/src/queries/generic_download/web/insert_generic_download_job.rs index 08d485dc1a..f7d02a15ff 100644 --- a/crates/lib/database_queries/src/queries/generic_download/web/insert_generic_download_job.rs +++ b/crates/lib/database_queries/src/queries/generic_download/web/insert_generic_download_job.rs @@ -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, } diff --git a/crates/lib/database_queries/src/queries/generic_inference/job/list_available_generic_inference_jobs.rs b/crates/lib/database_queries/src/queries/generic_inference/job/list_available_generic_inference_jobs.rs index 57aa3a3353..bc4fb8afe0 100644 --- a/crates/lib/database_queries/src/queries/generic_inference/job/list_available_generic_inference_jobs.rs +++ b/crates/lib/database_queries/src/queries/generic_inference/job/list_available_generic_inference_jobs.rs @@ -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, 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, pub creator_ip_address: String, - pub creator_set_visibility: EntityVisibility, + pub creator_set_visibility: Visibility, // Job information pub status: JobStatus, diff --git a/crates/lib/database_queries/src/queries/generic_inference/web/insert_generic_inference_job.rs b/crates/lib/database_queries/src/queries/generic_inference/web/insert_generic_inference_job.rs index 94da5b75d2..eadb6e79fa 100644 --- a/crates/lib/database_queries/src/queries/generic_inference/web/insert_generic_inference_job.rs +++ b/crates/lib/database_queries/src/queries/generic_inference/web/insert_generic_inference_job.rs @@ -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, } diff --git a/crates/lib/database_queries/src/queries/tts/tts_models/insert_tts_model_from_download_job.rs b/crates/lib/database_queries/src/queries/tts/tts_models/insert_tts_model_from_download_job.rs index a65d0d756f..00daa6d73e 100644 --- a/crates/lib/database_queries/src/queries/tts/tts_models/insert_tts_model_from_download_job.rs +++ b/crates/lib/database_queries/src/queries/tts/tts_models/insert_tts_model_from_download_job.rs @@ -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> { 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, diff --git a/crates/lib/database_queries/src/queries/users/user_profiles/get_user_profile_by_username.rs b/crates/lib/database_queries/src/queries/users/user_profiles/get_user_profile_by_username.rs index 9d60218cd7..f740834ae8 100644 --- a/crates/lib/database_queries/src/queries/users/user_profiles/get_user_profile_by_username.rs +++ b/crates/lib/database_queries/src/queries/users/user_profiles/get_user_profile_by_username.rs @@ -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, // 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, @@ -75,8 +75,8 @@ struct RawUserProfileRecord { created_at: DateTime, // 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, diff --git a/crates/lib/database_queries/src/queries/vocoder/get_vocoder_model.rs b/crates/lib/database_queries/src/queries/vocoder/get_vocoder_model.rs index b5244801b5..aa22ace7bc 100644 --- a/crates/lib/database_queries/src/queries/vocoder/get_vocoder_model.rs +++ b/crates/lib/database_queries/src/queries/vocoder/get_vocoder_model.rs @@ -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, pub updated_at: DateTime, @@ -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, pub updated_at: DateTime, diff --git a/crates/lib/database_queries/src/queries/vocoder/insert_vocoder_model.rs b/crates/lib/database_queries/src/queries/vocoder/insert_vocoder_model.rs index 41b97722b2..bc3cb4f8ba 100644 --- a/crates/lib/database_queries/src/queries/vocoder/insert_vocoder_model.rs +++ b/crates/lib/database_queries/src/queries/vocoder/insert_vocoder_model.rs @@ -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> { 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, diff --git a/crates/lib/database_queries/src/queries/voice_conversion/voice_conversion_models/insert_voice_conversion_model_from_download_job.rs b/crates/lib/database_queries/src/queries/voice_conversion/voice_conversion_models/insert_voice_conversion_model_from_download_job.rs index 9c70ad24be..d6bf18996b 100644 --- a/crates/lib/database_queries/src/queries/voice_conversion/voice_conversion_models/insert_voice_conversion_model_from_download_job.rs +++ b/crates/lib/database_queries/src/queries/voice_conversion/voice_conversion_models/insert_voice_conversion_model_from_download_job.rs @@ -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> { 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, diff --git a/crates/plugins/users/Cargo.toml b/crates/plugins/users/Cargo.toml index 7e674def8c..a072e348bf 100644 --- a/crates/plugins/users/Cargo.toml +++ b/crates/plugins/users/Cargo.toml @@ -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" } diff --git a/crates/plugins/users/src/endpoints/get_profile_handler.rs b/crates/plugins/users/src/endpoints/get_profile_handler.rs index e768701924..7120d372ed 100644 --- a/crates/plugins/users/src/endpoints/get_profile_handler.rs +++ b/crates/plugins/users/src/endpoints/get_profile_handler.rs @@ -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, pub twitch_username: Option, pub twitter_username: Option, diff --git a/crates/service/job/download_job/Cargo.toml b/crates/service/job/download_job/Cargo.toml index 372b9d5726..39196b6692 100644 --- a/crates/service/job/download_job/Cargo.toml +++ b/crates/service/job/download_job/Cargo.toml @@ -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" } diff --git a/crates/service/job/download_job/src/job_types/softvc/process_softvc_model.rs b/crates/service/job/download_job/src/job_types/softvc/process_softvc_model.rs index 1910929bae..bd133e5ee1 100644 --- a/crates/service/job/download_job/src/job_types/softvc/process_softvc_model.rs +++ b/crates/service/job/download_job/src/job_types/softvc/process_softvc_model.rs @@ -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, diff --git a/crates/service/job/download_job/src/job_types/tacotron/process_tacotron_model.rs b/crates/service/job/download_job/src/job_types/tacotron/process_tacotron_model.rs index 5f9773a1ef..0306733d08 100644 --- a/crates/service/job/download_job/src/job_types/tacotron/process_tacotron_model.rs +++ b/crates/service/job/download_job/src/job_types/tacotron/process_tacotron_model.rs @@ -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, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/download_job/enqueue_generic_download.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/download_job/enqueue_generic_download.rs index eadf802447..0ea1f440f9 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/download_job/enqueue_generic_download.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/download_job/enqueue_generic_download.rs @@ -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, + creator_set_visibility: Option, } #[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)); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/vocoders/get_vocoder.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/vocoders/get_vocoder.rs index 33cafb9655..97fd1642b2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/vocoders/get_vocoder.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/vocoders/get_vocoder.rs @@ -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, pub updated_at: DateTime, diff --git a/crates/types/reusable_types/src/db/enums/entity_visibility.rs b/crates/types/reusable_types/src/db/enums/entity_visibility.rs deleted file mode 100644 index 5823899add..0000000000 --- a/crates/types/reusable_types/src/db/enums/entity_visibility.rs +++ /dev/null @@ -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 { - 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()); - } -} diff --git a/crates/types/reusable_types/src/db/enums/mod.rs b/crates/types/reusable_types/src/db/enums/mod.rs index 351ce576b3..226cd89c3c 100644 --- a/crates/types/reusable_types/src/db/enums/mod.rs +++ b/crates/types/reusable_types/src/db/enums/mod.rs @@ -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;