mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-02 08:28:18 +00:00
Refactor - db enum types into enums crate
This commit is contained in:
1 parent
7a33c0721a
commit
9e589c2b72
25 files changed
+47
-37
No files matched your search
@@ -28,3 +28,5 @@ mod macros;
|
||||
|
||||
pub mod core;
|
||||
pub mod files;
|
||||
pub mod ml;
|
||||
pub mod workers;
|
||||
@@ -0,0 +1 @@
|
||||
pub mod vocoder_type;
|
||||
+1
-1
@@ -33,7 +33,7 @@ impl VocoderType {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::db::enums::vocoder_type::VocoderType;
|
||||
use crate::ml::vocoder_type::VocoderType;
|
||||
use crate::test_helpers::assert_serialization;
|
||||
|
||||
#[test]
|
||||
+4
-1
@@ -1,3 +1,6 @@
|
||||
|
||||
// TODO: Use macro-derived impls
|
||||
|
||||
/// Our "generic downloads" pipeline supports a wide variety of ML models and other media.
|
||||
/// They are serialized in the database table `generic_download_jobs` as a VARCHAR(32).
|
||||
///
|
||||
@@ -59,7 +62,7 @@ impl GenericDownloadType {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::db::enums::generic_download_type::GenericDownloadType;
|
||||
use crate::workers::generic_download_type::GenericDownloadType;
|
||||
use crate::test_helpers::assert_serialization;
|
||||
|
||||
#[test]
|
||||
+4
-1
@@ -1,3 +1,6 @@
|
||||
|
||||
// TODO: Use macro-derived impls
|
||||
|
||||
/// Our "generic inference" pipeline supports a wide variety of ML models and other media.
|
||||
/// Each type of inference is identified by the following enum variants.
|
||||
/// These types are present in the HTTP API and database columns as serialized here.
|
||||
@@ -34,7 +37,7 @@ impl GenericInferenceType {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::db::enums::generic_inference_type::GenericInferenceType;
|
||||
use crate::workers::generic_inference_type::GenericInferenceType;
|
||||
use crate::test_helpers::assert_serialization;
|
||||
|
||||
#[test]
|
||||
@@ -0,0 +1,2 @@
|
||||
pub mod generic_inference_type;
|
||||
pub mod generic_download_type;
|
||||
@@ -1,6 +0,0 @@
|
||||
//! 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 generic_download_type;
|
||||
pub mod generic_inference_type;
|
||||
pub mod vocoder_type;
|
||||
@@ -1,2 +1 @@
|
||||
pub mod enums;
|
||||
pub mod payloads;
|
||||
+2
-2
@@ -5,7 +5,7 @@ use crate::column_types::job_status::JobStatus;
|
||||
use crate::queries::generic_download::job::_keys::GenericDownloadJobId;
|
||||
use crate::tokens::Tokens;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::generic_download_type::GenericDownloadType;
|
||||
use enums::workers::generic_download_type::GenericDownloadType;
|
||||
use sqlx::MySqlPool;
|
||||
use std::path::Path;
|
||||
use tokens::jobs::download::DownloadJobToken;
|
||||
@@ -47,7 +47,7 @@ SELECT
|
||||
creator_ip_address,
|
||||
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_type as `download_type: enums::workers::generic_download_type::GenericDownloadType`,
|
||||
download_url,
|
||||
title,
|
||||
|
||||
|
||||
-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::generic_download_type::GenericDownloadType;
|
||||
use sqlx::MySqlPool;
|
||||
use tokens::jobs::download::DownloadJobToken;
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
use anyhow::anyhow;
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::generic_download_type::GenericDownloadType;
|
||||
use enums::workers::generic_download_type::GenericDownloadType;
|
||||
use sqlx::MySqlPool;
|
||||
use tokens::jobs::download::DownloadJobToken;
|
||||
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@ use crate::column_types::job_status::JobStatus;
|
||||
use crate::helpers::boolean_converters::i8_to_bool;
|
||||
use crate::queries::generic_inference::job::_keys::GenericInferenceJobId;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::generic_inference_type::GenericInferenceType;
|
||||
use enums::workers::generic_inference_type::GenericInferenceType;
|
||||
use sqlx::MySqlPool;
|
||||
use std::path::Path;
|
||||
use tokens::jobs::inference::InferenceJobToken;
|
||||
@@ -51,7 +51,7 @@ SELECT
|
||||
id as `id: crate::queries::generic_inference::job::_keys::GenericInferenceJobId`,
|
||||
token AS `inference_job_token: tokens::jobs::inference::InferenceJobToken`,
|
||||
|
||||
inference_type as `inference_type: reusable_types::db::enums::generic_inference_type::GenericInferenceType`,
|
||||
inference_type as `inference_type: enums::workers::generic_inference_type::GenericInferenceType`,
|
||||
maybe_inference_args,
|
||||
maybe_raw_inference_text,
|
||||
maybe_model_token,
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
use anyhow::anyhow;
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::generic_inference_type::GenericInferenceType;
|
||||
use enums::workers::generic_inference_type::GenericInferenceType;
|
||||
use sqlx::MySqlPool;
|
||||
use tokens::jobs::inference::InferenceJobToken;
|
||||
use tokens::users::user::UserToken;
|
||||
|
||||
+2
-2
@@ -4,10 +4,10 @@
|
||||
#![forbid(unused_variables)]
|
||||
|
||||
use chrono::{Utc, DateTime};
|
||||
use enums::ml::vocoder_type::VocoderType;
|
||||
use log::warn;
|
||||
use sqlx::MySqlPool;
|
||||
use sqlx;
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
|
||||
// TODO: Can probably just reuse another query.
|
||||
|
||||
@@ -91,7 +91,7 @@ SELECT
|
||||
tts.maybe_default_pretrained_vocoder,
|
||||
|
||||
tts.maybe_custom_vocoder_token,
|
||||
vocoder.vocoder_type as `maybe_custom_vocoder_type: reusable_types::db::enums::vocoder_type::VocoderType`,
|
||||
vocoder.vocoder_type as `maybe_custom_vocoder_type: enums::ml::vocoder_type::VocoderType`,
|
||||
vocoder.title as maybe_custom_vocoder_title,
|
||||
vocoder.private_bucket_hash as maybe_custom_vocoder_private_bucket_hash,
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ use chrono::{DateTime, Utc};
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use crate::helpers::boolean_converters::i8_to_bool;
|
||||
use enums::core::visibility::Visibility;
|
||||
use enums::ml::vocoder_type::VocoderType;
|
||||
use log::warn;
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use sqlx::MySqlPool;
|
||||
|
||||
// FIXME: This is the old style of query scoping and shouldn't be copied.
|
||||
@@ -120,7 +120,7 @@ async fn select_including_deleted(
|
||||
r#"
|
||||
SELECT
|
||||
vocoder.token as vocoder_token,
|
||||
vocoder.vocoder_type as `vocoder_type: reusable_types::db::enums::vocoder_type::VocoderType`,
|
||||
vocoder.vocoder_type as `vocoder_type: enums::ml::vocoder_type::VocoderType`,
|
||||
|
||||
vocoder.creator_user_token,
|
||||
users.username as creator_username,
|
||||
@@ -168,7 +168,7 @@ async fn select_without_deleted(
|
||||
r#"
|
||||
SELECT
|
||||
vocoder.token as vocoder_token,
|
||||
vocoder.vocoder_type as `vocoder_type: reusable_types::db::enums::vocoder_type::VocoderType`,
|
||||
vocoder.vocoder_type as `vocoder_type: enums::ml::vocoder_type::VocoderType`,
|
||||
|
||||
vocoder.creator_user_token,
|
||||
users.username as creator_username,
|
||||
|
||||
@@ -7,7 +7,7 @@ use anyhow::anyhow;
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use crate::tokens::Tokens;
|
||||
use enums::core::visibility::Visibility;
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use enums::ml::vocoder_type::VocoderType;
|
||||
use sqlx::MySqlPool;
|
||||
use std::path::Path;
|
||||
|
||||
|
||||
@@ -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::ml::vocoder_type::VocoderType;
|
||||
use log::{warn, info};
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use sqlx::MySqlPool;
|
||||
|
||||
// FIXME: This is the old style of query scoping and shouldn't be copied.
|
||||
@@ -115,7 +115,7 @@ async fn list_vocoder_models_for_all_creators(
|
||||
r#"
|
||||
SELECT
|
||||
vocoder.token as vocoder_token,
|
||||
vocoder.vocoder_type as `vocoder_type: reusable_types::db::enums::vocoder_type::VocoderType`,
|
||||
vocoder.vocoder_type as `vocoder_type: enums::ml::vocoder_type::VocoderType`,
|
||||
vocoder.creator_user_token,
|
||||
users.username as creator_username,
|
||||
users.display_name as creator_display_name,
|
||||
@@ -147,7 +147,7 @@ WHERE
|
||||
r#"
|
||||
SELECT
|
||||
vocoder.token as vocoder_token,
|
||||
vocoder.vocoder_type as `vocoder_type: reusable_types::db::enums::vocoder_type::VocoderType`,
|
||||
vocoder.vocoder_type as `vocoder_type: enums::ml::vocoder_type::VocoderType`,
|
||||
vocoder.creator_user_token,
|
||||
users.username as creator_username,
|
||||
users.display_name as creator_display_name,
|
||||
@@ -187,7 +187,7 @@ async fn list_vocoder_models_creator_scoped(
|
||||
r#"
|
||||
SELECT
|
||||
vocoder.token as vocoder_token,
|
||||
vocoder.vocoder_type as `vocoder_type: reusable_types::db::enums::vocoder_type::VocoderType`,
|
||||
vocoder.vocoder_type as `vocoder_type: enums::ml::vocoder_type::VocoderType`,
|
||||
vocoder.creator_user_token,
|
||||
users.username as creator_username,
|
||||
users.display_name as creator_display_name,
|
||||
@@ -221,7 +221,7 @@ WHERE
|
||||
r#"
|
||||
SELECT
|
||||
vocoder.token as vocoder_token,
|
||||
vocoder.vocoder_type as `vocoder_type: reusable_types::db::enums::vocoder_type::VocoderType`,
|
||||
vocoder.vocoder_type as `vocoder_type: enums::ml::vocoder_type::VocoderType`,
|
||||
vocoder.creator_user_token,
|
||||
users.username as creator_username,
|
||||
users.display_name as creator_display_name,
|
||||
|
||||
@@ -10,9 +10,9 @@ use crate::job_types::tacotron::process_tacotron_model::process_tacotron_model;
|
||||
use database_queries::queries::generic_download::job::list_available_generic_download_jobs::AvailableDownloadJob;
|
||||
use database_queries::queries::generic_download::job::mark_generic_download_job_done::mark_generic_download_job_done;
|
||||
use database_queries::queries::generic_download::job::mark_generic_download_job_pending_and_grab_lock::mark_generic_download_job_pending_and_grab_lock;
|
||||
use enums::workers::generic_download_type::GenericDownloadType;
|
||||
use jobs_common::redis_job_status_logger::RedisJobStatusLogger;
|
||||
use log::{info, warn};
|
||||
use reusable_types::db::enums::generic_download_type::GenericDownloadType;
|
||||
use tempdir::TempDir;
|
||||
|
||||
pub async fn process_single_job(job_state: &JobState, job: &AvailableDownloadJob) -> AnyhowResult<()> {
|
||||
|
||||
@@ -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::vocoder::insert_vocoder_model::{Args, insert_vocoder_model};
|
||||
use enums::ml::vocoder_type::VocoderType;
|
||||
use jobs_common::redis_job_status_logger::RedisJobStatusLogger;
|
||||
use log::{info, warn};
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::path::PathBuf;
|
||||
|
||||
+1
-1
@@ -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::vocoder::insert_vocoder_model::{Args, insert_vocoder_model};
|
||||
use enums::ml::vocoder_type::VocoderType;
|
||||
use jobs_common::redis_job_status_logger::RedisJobStatusLogger;
|
||||
use log::{info, warn};
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::path::PathBuf;
|
||||
|
||||
+1
-1
@@ -13,11 +13,11 @@ use crate::validations::validate_idempotency_token_format::validate_idempotency_
|
||||
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 enums::workers::generic_download_type::GenericDownloadType;
|
||||
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::generic_download_type::GenericDownloadType;
|
||||
use sqlx::error::DatabaseError;
|
||||
use sqlx::error::Error::Database;
|
||||
use sqlx::mysql::MySqlDatabaseError;
|
||||
|
||||
-1
@@ -24,7 +24,6 @@ use http_server_common::response::serialize_as_json_error::serialize_as_json_err
|
||||
use log::{info, warn, log};
|
||||
use media::decode_basic_audio_info::decode_basic_audio_info;
|
||||
use regex::Regex;
|
||||
use reusable_types::db::enums::generic_download_type::GenericDownloadType;
|
||||
use reusable_types::db::payloads::MediaUploadDetails;
|
||||
use sqlx::error::DatabaseError;
|
||||
use sqlx::error::Error::Database;
|
||||
|
||||
+1
-1
@@ -12,8 +12,8 @@ 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 enums::ml::vocoder_type::VocoderType;
|
||||
use log::warn;
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
|
||||
|
||||
+1
-1
@@ -10,8 +10,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::list_vocoder_models::{list_vocoder_models, VocoderModelListItem};
|
||||
use enums::ml::vocoder_type::VocoderType;
|
||||
use log::warn;
|
||||
use reusable_types::db::enums::vocoder_type::VocoderType;
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
|
||||
|
||||
+10
-2
@@ -12,12 +12,12 @@ use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
|
||||
use crate::server_state::ServerState;
|
||||
use database_queries::queries::generic_inference::web::insert_generic_inference_job::{Args, insert_generic_inference_job};
|
||||
use enums::core::visibility::Visibility;
|
||||
use enums::workers::generic_inference_type::GenericInferenceType;
|
||||
use http_server_common::request::get_request_header_optional::get_request_header_optional;
|
||||
use http_server_common::request::get_request_ip::get_request_ip;
|
||||
use log::{info, warn};
|
||||
use r2d2_redis::redis::Commands;
|
||||
use redis_common::redis_keys::RedisKeys;
|
||||
use reusable_types::db::enums::generic_inference_type::GenericInferenceType;
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
use tokens::jobs::inference::InferenceJobToken;
|
||||
@@ -208,10 +208,18 @@ pub async fn enqueue_voice_conversion_inference_handler(
|
||||
|
||||
info!("Creating voice conversion inference job record...");
|
||||
|
||||
|
||||
// TODO TODO TODO TODO --- InferenceArgs. ! This is where the media token will live.
|
||||
// - Also maybe move reusable_types stuff to `_types` as a manner of cleanup
|
||||
// - Also figure out which serializable types are giving the DB trouble. Wasn't this solved?
|
||||
// I don't want to call to_str, as_str, etc. everywhere.
|
||||
// - INFERENCE JOB(1) -> Voice Conversion (w/ Docker sidecar)
|
||||
// - INFERENCE JOB(2) -> Get it working with TTS too, and update the frontend
|
||||
|
||||
let query_result = insert_generic_inference_job(Args {
|
||||
job_token: &job_token,
|
||||
uuid_idempotency_token: &request.uuid_idempotency_token,
|
||||
inference_type: GenericInferenceType::VoiceConversion, // TODO: Move from `reusable_types`
|
||||
inference_type: GenericInferenceType::VoiceConversion,
|
||||
maybe_inference_args: None, // TODO: Include both tokens as well as allowed duration.
|
||||
maybe_raw_inference_text: None,
|
||||
maybe_model_token: Some(model_token),
|
||||
|
||||
Reference in new issue
Block a user