use clap::Parser; use diesel_async::AsyncPgConnection; use dotenv::dotenv; use grate::tracing; use thulani::db; #[derive(clap::Parser)] struct Opts { #[arg(short, long)] user_id: u64, #[arg(short, long)] deleter: u64, #[arg(long)] demo_meme: bool, } async fn create_demo_meme(conn: &mut AsyncPgConnection, owner: u64) -> anyhow::Result<()> { let meta = db::Metadata::create(conn, owner).await?; let meme = db::NewMeme { title: "my new meme".to_owned(), guild: 0, content: Some("abc".to_owned()), metadata_id: meta.id, audio_id: None, image_id: None, }; let meme = meme.save(conn, owner).await?; tracing::debug!(meme = ?meme, "created demo meme"); Ok(()) } #[tokio::main] pub async fn main() -> anyhow::Result<()> { thulani::log_setup::init(); dotenv().ok(); let opts = Opts::parse(); let mut conn = db::connection().await?; if opts.demo_meme { create_demo_meme(&mut conn, opts.user_id).await?; } let memes_deleted = db::del_memes_by_userid(&mut conn, opts.user_id, opts.deleter).await?; tracing::info!(deleted_memes = ?memes_deleted); Ok(()) }