fix errors, codegen db

This commit is contained in:
Brandon Thomas committed 2024-08-01 21:20:39 -04:00
1 parent 617f500039
commit be8822dce4
9 files changed
+67 -27

No files matched your search

@@ -0,0 +1,25 @@
{
"db_name": "MySQL",
"query": "\nSELECT NOW() as database_time\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "database_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | BINARY",
"char_set": 63,
"max_size": 19
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false
]
},
"hash": "47a6c402aad596530aef2c71c1e621bf73a386d754a79c5150cd30dc8ee2170f"
}
@@ -1,6 +1,6 @@
{
"db_name": "MySQL",
"query": "\nSELECT\n w.id,\n w.token as `token: tokens::tokens::model_weights::ModelWeightToken`,\n\n w.creator_set_visibility as `creator_set_visibility: enums::common::visibility::Visibility`,\n\n w.weights_type as `weights_type: enums::by_table::model_weights::weights_types::WeightsType`,\n w.weights_category as `weights_category: enums::by_table::model_weights::weights_category::WeightsCategory`,\n\n w.title,\n\n cover_image.token as `maybe_cover_image_media_file_token: tokens::tokens::media_files::MediaFileToken`,\n cover_image.public_bucket_directory_hash as maybe_cover_image_public_bucket_hash,\n cover_image.maybe_public_bucket_prefix as maybe_cover_image_public_bucket_prefix,\n cover_image.maybe_public_bucket_extension as maybe_cover_image_public_bucket_extension,\n\n w.creator_user_token as `creator_user_token: tokens::tokens::users::UserToken`,\n users.username as creator_username,\n users.display_name as creator_display_name,\n users.email_gravatar_hash as creator_gravatar_hash,\n\n entity_stats.ratings_positive_count as maybe_ratings_positive_count,\n entity_stats.ratings_negative_count as maybe_ratings_negative_count,\n entity_stats.bookmark_count as maybe_bookmark_count,\n\n extension_tts.ietf_language_tag as maybe_tts_ietf_language_tag,\n extension_tts.ietf_primary_language_subtag as maybe_tts_ietf_primary_language_subtag,\n\n extension_vc.ietf_language_tag as maybe_vc_ietf_language_tag,\n extension_vc.ietf_primary_language_subtag as maybe_vc_ietf_primary_language_subtag,\n\n w.created_at,\n w.updated_at,\n w.user_deleted_at,\n w.mod_deleted_at\n\nFROM model_weights as w\n\nJOIN users\n ON users.token = w.creator_user_token\n\nLEFT OUTER JOIN model_weights_extension_tts_details as extension_tts\n ON extension_tts.model_weights_token = w.token\nLEFT OUTER JOIN model_weights_extension_voice_conversion_details as extension_vc\n ON extension_vc.model_weights_token = w.token\nLEFT OUTER JOIN entity_stats\n ON entity_stats.entity_type = \"model_weights\"\n AND entity_stats.entity_token = w.token\nLEFT OUTER JOIN media_files as cover_image\n ON cover_image.token = w.maybe_cover_image_media_file_token\n\nWHERE\n w.id > ?\nORDER BY id ASC\nLIMIT ?\n ",
"query": "\nSELECT\n w.id,\n w.token as `token: tokens::tokens::model_weights::ModelWeightToken`,\n\n w.creator_set_visibility as `creator_set_visibility: enums::common::visibility::Visibility`,\n\n w.weights_type as `weights_type: enums::by_table::model_weights::weights_types::WeightsType`,\n w.weights_category as `weights_category: enums::by_table::model_weights::weights_category::WeightsCategory`,\n\n w.title,\n\n cover_image.token as `maybe_cover_image_media_file_token: tokens::tokens::media_files::MediaFileToken`,\n cover_image.public_bucket_directory_hash as maybe_cover_image_public_bucket_hash,\n cover_image.maybe_public_bucket_prefix as maybe_cover_image_public_bucket_prefix,\n cover_image.maybe_public_bucket_extension as maybe_cover_image_public_bucket_extension,\n\n w.creator_user_token as `creator_user_token: tokens::tokens::users::UserToken`,\n users.username as creator_username,\n users.display_name as creator_display_name,\n users.email_gravatar_hash as creator_gravatar_hash,\n\n entity_stats.ratings_positive_count as maybe_ratings_positive_count,\n entity_stats.ratings_negative_count as maybe_ratings_negative_count,\n entity_stats.bookmark_count as maybe_bookmark_count,\n\n extension_tts.ietf_language_tag as maybe_tts_ietf_language_tag,\n extension_tts.ietf_primary_language_subtag as maybe_tts_ietf_primary_language_subtag,\n\n extension_vc.ietf_language_tag as maybe_vc_ietf_language_tag,\n extension_vc.ietf_primary_language_subtag as maybe_vc_ietf_primary_language_subtag,\n\n w.created_at,\n w.updated_at,\n w.user_deleted_at,\n w.mod_deleted_at,\n\n NOW() as database_read_time\n\nFROM model_weights as w\n\nJOIN users\n ON users.token = w.creator_user_token\n\nLEFT OUTER JOIN model_weights_extension_tts_details as extension_tts\n ON extension_tts.model_weights_token = w.token\nLEFT OUTER JOIN model_weights_extension_voice_conversion_details as extension_vc\n ON extension_vc.model_weights_token = w.token\nLEFT OUTER JOIN entity_stats\n ON entity_stats.entity_type = \"model_weights\"\n AND entity_stats.entity_token = w.token\nLEFT OUTER JOIN media_files as cover_image\n ON cover_image.token = w.maybe_cover_image_media_file_token\n\nWHERE\n w.id > ?\nORDER BY id ASC\nLIMIT ?\n ",
"describe": {
"columns": [
{
@@ -252,6 +252,16 @@
"char_set": 63,
"max_size": 19
}
},
{
"ordinal": 25,
"name": "database_read_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | BINARY",
"char_set": 63,
"max_size": 19
}
}
],
"parameters": {
@@ -282,8 +292,9 @@
false,
false,
true,
true
true,
false
]
},
"hash": "6040227c139f6e2972734515b0a904d2a7b04bbf1a419677fc19287a0757ae21"
"hash": "64d5f1637d1106b5f5a7e8683621e1b718aca097437568e0957416586eba922d"
}
@@ -1,12 +0,0 @@
{
"db_name": "MySQL",
"query": "\nINSERT INTO users (\n token,\n username,\n display_name,\n email_address,\n email_gravatar_hash,\n profile_markdown,\n profile_rendered_html,\n user_role_slug,\n password_hash,\n ip_address_creation,\n ip_address_last_login,\n ip_address_last_update,\n can_access_studio\n)\nVALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 13
},
"nullable": []
},
"hash": "a3066dd68c77b5381104a754b2774506990f659c9a0ed2de1fcb8e6fd953e726"
}
@@ -101,6 +101,7 @@ async fn create_document_from_record(elasticsearch: &Elasticsearch, record: Mode
user_deleted_at: record.user_deleted_at,
mod_deleted_at: record.mod_deleted_at,
database_read_time: record.database_read_time,
is_deleted,
};
@@ -135,6 +135,8 @@ async fn create_document_from_record(elasticsearch: &Elasticsearch, record: Medi
user_deleted_at: record.user_deleted_at,
mod_deleted_at: record.mod_deleted_at,
database_read_time: record.database_read_time,
is_deleted,
};
@@ -1,5 +1,5 @@
use anyhow::anyhow;
use chrono::{DateTime, Utc};
use chrono::{DateTime, NaiveDateTime, Utc};
use sqlx::MySqlPool;
use errors::AnyhowResult;
@@ -8,22 +8,28 @@ pub struct GetDatabaseTimeResult {
pub database_time: DateTime<Utc>,
}
struct InternalGetDatabaseTimeResult {
database_time: NaiveDateTime,
}
/// Query the DB for its current time
pub async fn get_database_time(
pool: &MySqlPool,
) -> AnyhowResult<GetDatabaseTimeResult> {
let maybe_record = sqlx::query_as!(
GetDatabaseTimeResult,
InternalGetDatabaseTimeResult,
r#"
SELECT NOW() as `database_time: DateTime<Utc>`
SELECT NOW() as database_time
"#,
)
.fetch_one(pool)
.await;
match maybe_record {
Ok(record) => Ok(record),
Ok(record) => Ok(GetDatabaseTimeResult {
database_time: record.database_time.and_utc(),
}),
Err(sqlx::Error::RowNotFound) => Err(anyhow!("query didn't return anything")),
Err(ref err) => Err(anyhow!("database query error: {:?}", err)),
}
@@ -1,7 +1,7 @@
use std::collections::HashSet;
use anyhow::anyhow;
use chrono::{DateTime, Utc};
use chrono::{DateTime, NaiveDateTime, Utc};
use log::{info, warn};
use sqlx::{Execute, FromRow, MySql, MySqlPool, QueryBuilder, Row};
use sqlx::mysql::MySqlRow;
@@ -199,7 +199,7 @@ pub async fn list_media_files_for_elastic_search_backfill_using_cursor(
updated_at: record.updated_at,
user_deleted_at: record.user_deleted_at,
mod_deleted_at: record.mod_deleted_at,
database_read_time: record.database_read_time,
database_read_time: record.database_read_time.and_utc(),
}
})
.collect::<Vec<MediaFileForElasticsearchRecord>>())
@@ -440,7 +440,7 @@ struct RawRecord {
pub user_deleted_at: Option<DateTime<Utc>>,
pub mod_deleted_at: Option<DateTime<Utc>>,
pub database_read_time: DateTime<Utc>,
pub database_read_time: NaiveDateTime,
}
impl FromRow<'_, MySqlRow> for RawRecord {
@@ -1,5 +1,5 @@
use anyhow::anyhow;
use chrono::{DateTime, Utc};
use chrono::{DateTime, NaiveDateTime, Utc};
use log::warn;
use sqlx::{Executor, FromRow, MySql, QueryBuilder, Row};
use sqlx::mysql::MySqlRow;
@@ -113,7 +113,7 @@ pub async fn batch_get_model_weights_for_elastic_search_backfill<'e, 'c, E>(
updated_at: model.updated_at,
user_deleted_at: model.user_deleted_at,
mod_deleted_at: model.mod_deleted_at,
database_read_time: model.database_read_time,
database_read_time: model.database_read_time.and_utc(),
}
})
.collect::<Vec<ModelWeightForElasticsearchRecord>>())
@@ -248,7 +248,7 @@ struct RawRecord {
pub user_deleted_at: Option<DateTime<Utc>>,
pub mod_deleted_at: Option<DateTime<Utc>>,
pub database_read_time: DateTime<Utc>,
pub database_read_time: NaiveDateTime,
}
// NB(bt,2023-12-05): There's an issue with type hinting in the `as` clauses with QueryBuilder (or
@@ -1,5 +1,5 @@
use anyhow::anyhow;
use chrono::{DateTime, Utc};
use chrono::{DateTime, NaiveDateTime, Utc};
use log::warn;
use sqlx::{MySql, MySqlPool};
use sqlx::pool::PoolConnection;
@@ -55,6 +55,8 @@ pub struct ModelWeightForElasticsearchRecord {
pub user_deleted_at: Option<DateTime<Utc>>,
pub mod_deleted_at: Option<DateTime<Utc>>,
pub database_read_time: DateTime<Utc>,
}
pub async fn list_model_weights_for_elastic_search_backfill_using_cursor(
@@ -105,6 +107,7 @@ pub async fn list_model_weights_for_elastic_search_backfill_using_cursor(
updated_at: model.updated_at,
user_deleted_at: model.user_deleted_at,
mod_deleted_at: model.mod_deleted_at,
database_read_time: model.database_read_time.and_utc(),
}
})
.collect::<Vec<ModelWeightForElasticsearchRecord>>())
@@ -152,7 +155,9 @@ SELECT
w.created_at,
w.updated_at,
w.user_deleted_at,
w.mod_deleted_at
w.mod_deleted_at,
NOW() as database_read_time
FROM model_weights as w
@@ -222,4 +227,6 @@ struct RawRecord {
pub user_deleted_at: Option<DateTime<Utc>>,
pub mod_deleted_at: Option<DateTime<Utc>>,
pub database_read_time: NaiveDateTime,
}