mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-04 09:28:11 +00:00
75 lines
1.8 KiB
Rust
75 lines
1.8 KiB
Rust
use log::info;
|
|
use sqlx::{MySql, Pool};
|
|
use sqlx::mysql::MySqlPoolOptions;
|
|
|
|
use easyenv::init_all_with_default_logging;
|
|
use errors::AnyhowResult;
|
|
|
|
use crate::cli_args::Action;
|
|
use crate::operations::delete_all_anonymous_user_images::delete_all_anonymous_user_images::delete_all_anonymous_user_images;
|
|
use crate::operations::delete_user_files::delete_user_files::delete_user_files;
|
|
use crate::operations::migrate_media_files_enum_values::migrate_media_files_enum_values::migrate_media_files_enum_values;
|
|
|
|
mod cli_args;
|
|
mod operations;
|
|
mod util;
|
|
|
|
/*
|
|
|
|
Users that have had files deleted:
|
|
- cheesetherat
|
|
- endtimes
|
|
- expandinggirl
|
|
- markiwrench
|
|
- regista2
|
|
- regista77
|
|
|
|
TODO:
|
|
- juanfra3567
|
|
- ceistin
|
|
- elfabro17
|
|
- sodoka
|
|
- fluffernater
|
|
|
|
*/
|
|
|
|
#[tokio::main]
|
|
async fn main() -> AnyhowResult<()> {
|
|
println!("db-cleanup: hard or soft delete database records");
|
|
|
|
init_all_with_default_logging(None);
|
|
|
|
// NB: This secrets file differs from the rest because we might want to delete from production.
|
|
// (Hopefully this isn't getting out of hand at this point.)
|
|
easyenv::from_filename(".env-db-cleanup-secrets")?;
|
|
|
|
let args = cli_args::parse_cli_args()?;
|
|
|
|
let mysql = get_mysql("MYSQL_PRODUCTION_URL").await?;
|
|
|
|
match args.action {
|
|
Action::DeleteAllAnonymousUserImages => {
|
|
delete_all_anonymous_user_images(&args, &mysql).await?;
|
|
}
|
|
Action::DeleteUserFiles => {
|
|
delete_user_files(&args, &mysql).await?;
|
|
}
|
|
Action::MigrateMediaFilesEnumValues => {
|
|
migrate_media_files_enum_values(&args, &mysql).await?;
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|
|
|
|
async fn get_mysql(env_var_name: &str) -> errors::AnyhowResult<Pool<MySql>> {
|
|
info!("Connecting to MySQL {env_var_name}...");
|
|
|
|
let pool = MySqlPoolOptions::new()
|
|
.max_connections(easyenv::get_env_num("MYSQL_MAX_CONNECTIONS", 3)?)
|
|
.connect(&easyenv::get_env_string_required(env_var_name)?)
|
|
.await?;
|
|
|
|
Ok(pool)
|
|
}
|