db codegen + fix build errors

This commit is contained in:
Brandon Thomas committed 2023-11-28 06:19:37 -05:00
1 parent fb9a9b75bf
commit 2cfcbf8a75
9 files changed
+88 -69

No files matched your search

@@ -1,6 +1,6 @@
{
"db_name": "MySQL",
"query": "\nSELECT *\nFROM tts_model_upload_jobs\nWHERE\n (\n status IN (\"pending\", \"attempt_failed\")\n )\n AND\n (\n retry_at IS NULL\n OR\n retry_at < CURRENT_TIMESTAMP\n )\n LIMIT ?\n ",
"query": "\nSELECT\n id,\n token,\n uuid_idempotency_token,\n on_success_result_token,\n creator_user_token as `creator_user_token: tokens::tokens::users::UserToken`,\n creator_ip_address,\n creator_set_visibility,\n title,\n tts_model_type,\n download_url,\n status,\n attempt_count,\n failure_reason,\n created_at,\n updated_at,\n retry_at\nFROM tts_model_upload_jobs\nWHERE\n (\n status IN (\"pending\", \"attempt_failed\")\n )\n AND\n (\n retry_at IS NULL\n OR\n retry_at < CURRENT_TIMESTAMP\n )\n LIMIT ?\n ",
"describe": {
"columns": [
{
@@ -45,37 +45,7 @@
},
{
"ordinal": 4,
"name": "title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | BINARY | NO_DEFAULT_VALUE",
"char_set": 224,
"max_size": 1020
}
},
{
"ordinal": 5,
"name": "tts_model_type",
"type_info": {
"type": "String",
"flags": "NOT_NULL | BINARY | ENUM",
"char_set": 224,
"max_size": 60
}
},
{
"ordinal": 6,
"name": "download_url",
"type_info": {
"type": "VarString",
"flags": "BINARY",
"char_set": 224,
"max_size": 2048
}
},
{
"ordinal": 7,
"name": "creator_user_token",
"name": "creator_user_token: tokens::tokens::users::UserToken",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
@@ -84,7 +54,7 @@
}
},
{
"ordinal": 8,
"ordinal": 5,
"name": "creator_ip_address",
"type_info": {
"type": "VarString",
@@ -94,7 +64,7 @@
}
},
{
"ordinal": 9,
"ordinal": 6,
"name": "creator_set_visibility",
"type_info": {
"type": "String",
@@ -103,6 +73,36 @@
"max_size": 28
}
},
{
"ordinal": 7,
"name": "title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | BINARY | NO_DEFAULT_VALUE",
"char_set": 224,
"max_size": 1020
}
},
{
"ordinal": 8,
"name": "tts_model_type",
"type_info": {
"type": "String",
"flags": "NOT_NULL | BINARY | ENUM",
"char_set": 224,
"max_size": 60
}
},
{
"ordinal": 9,
"name": "download_url",
"type_info": {
"type": "VarString",
"flags": "BINARY",
"char_set": 224,
"max_size": 2048
}
},
{
"ordinal": 10,
"name": "status",
@@ -174,17 +174,17 @@
true,
false,
false,
false,
false,
false,
true,
false,
false,
false,
false,
false,
true,
false,
false,
true
]
},
"hash": "7ab54466ca3021d90e0feb234acba56bf53d415dde69bc1c35120ed0c8dd1858"
"hash": "066c16a04112b0ee83a54e29d5f96125f7c90db89ec9bd16275172d14722a381"
}
@@ -1,6 +1,6 @@
{
"db_name": "MySQL",
"query": "\nSELECT\n tts_results.token as tts_result_token,\n\n tts_results.raw_inference_text,\n\n tts_results.model_token as tts_model_token,\n tts_models.title as tts_model_title,\n\n tts_results.maybe_pretrained_vocoder_used,\n\n users.token as maybe_creator_user_token,\n users.username as maybe_creator_username,\n users.display_name as maybe_creator_display_name,\n users.email_gravatar_hash as maybe_creator_gravatar_hash,\n users.is_banned as maybe_creator_is_banned,\n\n model_users.token as maybe_model_creator_user_token,\n model_users.username as maybe_model_creator_username,\n model_users.display_name as maybe_model_creator_display_name,\n model_users.email_gravatar_hash as maybe_model_creator_gravatar_hash,\n model_users.is_banned as maybe_model_creator_is_banned,\n\n tts_results.public_bucket_wav_audio_path,\n tts_results.public_bucket_spectrogram_path,\n\n tts_results.creator_set_visibility,\n\n tts_results.generated_by_worker,\n tts_results.is_debug_request,\n\n tts_results.file_size_bytes,\n tts_results.duration_millis,\n tts_results.created_at,\n tts_results.updated_at,\n\n tts_results.creator_ip_address,\n tts_results.user_deleted_at,\n tts_results.mod_deleted_at\n\nFROM tts_results\nLEFT OUTER JOIN tts_models\n ON tts_results.model_token = tts_models.token\nLEFT OUTER JOIN users\n ON tts_results.maybe_creator_user_token = users.token\nLEFT OUTER JOIN users as model_users\n ON tts_models.creator_user_token = model_users.token\nWHERE\n tts_results.token = ?\n ",
"query": "\nSELECT\n tts_results.token as tts_result_token,\n\n tts_results.raw_inference_text,\n\n tts_results.model_token as tts_model_token,\n tts_models.title as tts_model_title,\n\n tts_results.maybe_pretrained_vocoder_used,\n\n users.token as `maybe_creator_user_token: tokens::tokens::users::UserToken`,\n users.username as maybe_creator_username,\n users.display_name as maybe_creator_display_name,\n users.email_gravatar_hash as maybe_creator_gravatar_hash,\n users.is_banned as maybe_creator_is_banned,\n\n model_users.token as maybe_model_creator_user_token,\n model_users.username as maybe_model_creator_username,\n model_users.display_name as maybe_model_creator_display_name,\n model_users.email_gravatar_hash as maybe_model_creator_gravatar_hash,\n model_users.is_banned as maybe_model_creator_is_banned,\n\n tts_results.public_bucket_wav_audio_path,\n tts_results.public_bucket_spectrogram_path,\n\n tts_results.creator_set_visibility,\n\n tts_results.generated_by_worker,\n tts_results.is_debug_request,\n\n tts_results.file_size_bytes,\n tts_results.duration_millis,\n tts_results.created_at,\n tts_results.updated_at,\n\n tts_results.creator_ip_address,\n tts_results.user_deleted_at,\n tts_results.mod_deleted_at\n\nFROM tts_results\nLEFT OUTER JOIN tts_models\n ON tts_results.model_token = tts_models.token\nLEFT OUTER JOIN users\n ON tts_results.maybe_creator_user_token = users.token\nLEFT OUTER JOIN users as model_users\n ON tts_models.creator_user_token = model_users.token\nWHERE\n tts_results.token = ?\n ",
"describe": {
"columns": [
{
@@ -55,7 +55,7 @@
},
{
"ordinal": 5,
"name": "maybe_creator_user_token",
"name": "maybe_creator_user_token: tokens::tokens::users::UserToken",
"type_info": {
"type": "VarString",
"flags": "UNIQUE_KEY | BINARY | NO_DEFAULT_VALUE",
@@ -307,5 +307,5 @@
true
]
},
"hash": "c7b4fecd829bddaeff77a6ce2240e2b939c5faac4a94da56aefd2a27eb9ed64a"
"hash": "1246d346e63efa99516ab4efa2aec90e37322184237d94782f77cf7a7a14d53f"
}
@@ -1,6 +1,6 @@
{
"db_name": "MySQL",
"query": "\nSELECT\n tts_results.token as tts_result_token,\n\n tts_results.raw_inference_text,\n\n tts_results.model_token as tts_model_token,\n tts_models.title as tts_model_title,\n\n tts_results.maybe_pretrained_vocoder_used,\n\n users.token as maybe_creator_user_token,\n users.username as maybe_creator_username,\n users.display_name as maybe_creator_display_name,\n users.email_gravatar_hash as maybe_creator_gravatar_hash,\n users.is_banned as maybe_creator_is_banned,\n\n model_users.token as maybe_model_creator_user_token,\n model_users.username as maybe_model_creator_username,\n model_users.display_name as maybe_model_creator_display_name,\n model_users.email_gravatar_hash as maybe_model_creator_gravatar_hash,\n model_users.is_banned as maybe_model_creator_is_banned,\n\n tts_results.public_bucket_wav_audio_path,\n tts_results.public_bucket_spectrogram_path,\n\n tts_results.creator_set_visibility,\n\n tts_results.generated_by_worker,\n tts_results.is_debug_request,\n\n tts_results.file_size_bytes,\n tts_results.duration_millis,\n tts_results.created_at,\n tts_results.updated_at,\n\n tts_results.creator_ip_address,\n tts_results.user_deleted_at,\n tts_results.mod_deleted_at\n\nFROM tts_results\nLEFT OUTER JOIN tts_models\n ON tts_results.model_token = tts_models.token\nLEFT OUTER JOIN users\n ON tts_results.maybe_creator_user_token = users.token\nLEFT OUTER JOIN users as model_users\n ON tts_models.creator_user_token = model_users.token\nWHERE\n tts_results.token = ?\n AND tts_results.user_deleted_at IS NULL\n AND tts_results.mod_deleted_at IS NULL\n ",
"query": "\nSELECT\n tts_results.token as tts_result_token,\n\n tts_results.raw_inference_text,\n\n tts_results.model_token as tts_model_token,\n tts_models.title as tts_model_title,\n\n tts_results.maybe_pretrained_vocoder_used,\n\n users.token as `maybe_creator_user_token: tokens::tokens::users::UserToken`,\n users.username as maybe_creator_username,\n users.display_name as maybe_creator_display_name,\n users.email_gravatar_hash as maybe_creator_gravatar_hash,\n users.is_banned as maybe_creator_is_banned,\n\n model_users.token as maybe_model_creator_user_token,\n model_users.username as maybe_model_creator_username,\n model_users.display_name as maybe_model_creator_display_name,\n model_users.email_gravatar_hash as maybe_model_creator_gravatar_hash,\n model_users.is_banned as maybe_model_creator_is_banned,\n\n tts_results.public_bucket_wav_audio_path,\n tts_results.public_bucket_spectrogram_path,\n\n tts_results.creator_set_visibility,\n\n tts_results.generated_by_worker,\n tts_results.is_debug_request,\n\n tts_results.file_size_bytes,\n tts_results.duration_millis,\n tts_results.created_at,\n tts_results.updated_at,\n\n tts_results.creator_ip_address,\n tts_results.user_deleted_at,\n tts_results.mod_deleted_at\n\nFROM tts_results\nLEFT OUTER JOIN tts_models\n ON tts_results.model_token = tts_models.token\nLEFT OUTER JOIN users\n ON tts_results.maybe_creator_user_token = users.token\nLEFT OUTER JOIN users as model_users\n ON tts_models.creator_user_token = model_users.token\nWHERE\n tts_results.token = ?\n AND tts_results.user_deleted_at IS NULL\n AND tts_results.mod_deleted_at IS NULL\n ",
"describe": {
"columns": [
{
@@ -55,7 +55,7 @@
},
{
"ordinal": 5,
"name": "maybe_creator_user_token",
"name": "maybe_creator_user_token: tokens::tokens::users::UserToken",
"type_info": {
"type": "VarString",
"flags": "UNIQUE_KEY | BINARY | NO_DEFAULT_VALUE",
@@ -307,5 +307,5 @@
true
]
},
"hash": "a3818a8688e1adab95f9f1263fbbd7effd5b77348b4e19cdba02672602b91d98"
"hash": "386edf6842d78c963b0ab35a25b8d00f65abb529e2a5e4c206895ac9a807085a"
}
@@ -48,7 +48,7 @@ async fn create_rvc_model(
original_download_url: "https://example.com",
original_filename: "unknown.zip",
file_size_bytes: 1234,
creator_user_token: creator_user_token.as_str(),
creator_user_token,
creator_ip_address: "127.0.0.1",
creator_set_visibility: Default::default(),
has_index_file,
@@ -85,7 +85,7 @@ impl BadgeGranter {
}
/// This needs to be called *after* successful upload.
pub async fn maybe_grant_voice_conversion_model_uploads_badge(&self, user_token: &str) -> AnyhowResult<()> {
pub async fn maybe_grant_voice_conversion_model_uploads_badge(&self, user_token: &UserToken) -> AnyhowResult<()> {
let count = self.count_voice_conversion_models_uploaded(user_token).await?;
let mut maybe_badge = None;
@@ -119,16 +119,16 @@ impl BadgeGranter {
None => return Ok(()),
};
if self.has_badge(user_token, badge).await? {
if self.has_badge(user_token.as_str(), badge).await? {
return Ok(())
}
let _record_id = self.insert(
badge,
user_token,
user_token.as_str(),
).await?;
self.firehose_publisher.publish_user_badge_granted(user_token, badge.to_db_value())
self.firehose_publisher.publish_user_badge_granted(user_token.as_str(), badge.to_db_value())
.await?;
Ok(())
@@ -184,8 +184,8 @@ impl BadgeGranter {
}
/// This needs to be called *after* successful upload.
pub async fn maybe_grant_vocoder_model_uploads_badge(&self, user_token: &str) -> AnyhowResult<()> {
let count = self.count_vocoder_models_uploaded(user_token).await?;
pub async fn maybe_grant_vocoder_model_uploads_badge(&self, user_token: &UserToken) -> AnyhowResult<()> {
let count = self.count_vocoder_models_uploaded(user_token.as_str()).await?;
let mut maybe_badge = None;
@@ -218,24 +218,24 @@ impl BadgeGranter {
None => return Ok(()),
};
if self.has_badge(user_token, badge).await? {
if self.has_badge(user_token.as_str(), badge).await? {
return Ok(())
}
let _record_id = self.insert(
badge,
user_token,
user_token.as_str(),
).await?;
self.firehose_publisher.publish_user_badge_granted(user_token, badge.to_db_value())
self.firehose_publisher.publish_user_badge_granted(user_token.as_str(), badge.to_db_value())
.await?;
Ok(())
}
/// This needs to be called *after* successful upload.
pub async fn maybe_grant_softvc_vocoder_model_uploads_badge(&self, user_token: &str) -> AnyhowResult<()> {
let count = self.count_softvc_vocoder_models_uploaded(user_token).await?;
pub async fn maybe_grant_softvc_vocoder_model_uploads_badge(&self, user_token: &UserToken) -> AnyhowResult<()> {
let count = self.count_softvc_vocoder_models_uploaded(user_token.as_str()).await?;
let mut maybe_badge = None;
@@ -268,16 +268,16 @@ impl BadgeGranter {
None => return Ok(()),
};
if self.has_badge(user_token, badge).await? {
if self.has_badge(user_token.as_str(), badge).await? {
return Ok(())
}
let _record_id = self.insert(
badge,
user_token,
user_token.as_str(),
).await?;
self.firehose_publisher.publish_user_badge_granted(user_token, badge.to_db_value())
self.firehose_publisher.publish_user_badge_granted(user_token.as_str(), badge.to_db_value())
.await?;
Ok(())
@@ -345,7 +345,7 @@ LIMIT 1
async fn count_voice_conversion_models_uploaded(
&self,
user_token: &str,
user_token: &UserToken,
) -> AnyhowResult<u64> {
// NB: This could get expensive!
let maybe_result = sqlx::query_as!(
@@ -125,10 +125,10 @@ impl FirehosePublisher {
Ok(())
}
pub async fn publish_tts_model_upload_finished(&self, user_token: &str, model_token: &str) -> AnyhowResult<()> {
pub async fn publish_tts_model_upload_finished(&self, user_token: &UserToken, model_token: &str) -> AnyhowResult<()> {
let _record_id = self.insert(
FirehoseEvent::TtsModelUploadCompleted,
Some(user_token),
Some(user_token.as_str()),
Some(model_token),
Some(model_token)
).await?;
@@ -258,10 +258,10 @@ impl FirehosePublisher {
}
// NB: Entity token is optional.
pub async fn publish_generic_download_finished(&self, user_token: &str, entity_token: Option<&str>) -> AnyhowResult<()> {
pub async fn publish_generic_download_finished(&self, user_token: &UserToken, entity_token: Option<&str>) -> AnyhowResult<()> {
let _record_id = self.insert(
FirehoseEvent::GenericDownloadCompleted,
Some(user_token),
Some(user_token.as_str()),
entity_token,
entity_token,
).await?;
@@ -6,6 +6,7 @@ use sqlx::MySqlPool;
use errors::AnyhowResult;
use tokens::tokens::tts_models::TtsModelToken;
use tokens::tokens::users::UserToken;
/// table: tts_model_upload_jobs
#[derive(Debug)]
@@ -14,7 +15,7 @@ pub struct TtsUploadJobRecord {
pub token: String,
pub uuid_idempotency_token: String,
pub on_success_result_token: Option<String>,
pub creator_user_token: String,
pub creator_user_token: UserToken,
pub creator_ip_address: String,
pub creator_set_visibility: String, // TODO
pub title: String,
@@ -34,7 +35,23 @@ pub async fn query_tts_upload_job_records(pool: &MySqlPool, num_records: u32)
let job_records = sqlx::query_as!(
TtsUploadJobRecord,
r#"
SELECT *
SELECT
id,
token,
uuid_idempotency_token,
on_success_result_token,
creator_user_token as `creator_user_token: tokens::tokens::users::UserToken`,
creator_ip_address,
creator_set_visibility,
title,
tts_model_type,
download_url,
status,
attempt_count,
failure_reason,
created_at,
updated_at,
retry_at
FROM tts_model_upload_jobs
WHERE
(
@@ -229,7 +246,7 @@ SET
"#,
&model_token,
job.title.to_string(),
job.creator_user_token.clone(),
job.creator_user_token.as_str(),
job.creator_ip_address.clone(),
job.creator_ip_address.clone(),
job.download_url.clone(),
@@ -11,6 +11,7 @@ use sqlx::MySqlPool;
use enums::common::visibility::Visibility;
use enums::common::vocoder_type::VocoderType;
use errors::AnyhowResult;
use tokens::tokens::users::UserToken;
use tokens::tokens::vocoder_models::VocoderModelToken;
pub struct Args<'a, P: AsRef<Path>> {
@@ -22,7 +23,7 @@ pub struct Args<'a, P: AsRef<Path>> {
pub original_filename: &'a str,
pub file_size_bytes: u64,
pub creator_user_token: &'a str,
pub creator_user_token: &'a UserToken,
pub creator_ip_address: &'a str,
pub creator_set_visibility: Visibility,
@@ -6,6 +6,7 @@ use sqlx::MySqlPool;
use enums::by_table::voice_conversion_models::voice_conversion_model_type::VoiceConversionModelType;
use enums::common::visibility::Visibility;
use errors::AnyhowResult;
use tokens::tokens::users::UserToken;
use tokens::tokens::voice_conversion_models::VoiceConversionModelToken;
pub struct InsertVoiceConversionModelArgs<'a, P: AsRef<Path>> {
@@ -17,7 +18,7 @@ pub struct InsertVoiceConversionModelArgs<'a, P: AsRef<Path>> {
pub original_filename: &'a str,
pub file_size_bytes: u64,
pub creator_user_token: &'a str,
pub creator_user_token: &'a UserToken,
pub creator_ip_address: &'a str,
pub creator_set_visibility: Visibility,