diff options
Diffstat (limited to 'src/bin/batch_delmeme.rs')
| -rw-r--r-- | src/bin/batch_delmeme.rs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/bin/batch_delmeme.rs b/src/bin/batch_delmeme.rs new file mode 100644 index 0000000..99c57fe --- /dev/null +++ b/src/bin/batch_delmeme.rs @@ -0,0 +1,50 @@ +use clap::Parser; +use diesel_async::AsyncPgConnection; +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(), + content: Some("abc".to_owned()), + metadata_id: meta.id, + audio_id: None, + image_id: None, + }; + let meme = meme.save(conn, owner).await?; + log::debug!("created demo meme: {meme:#?}"); + + Ok(()) +} + +#[tokio::main] +pub async fn main() -> anyhow::Result<()> { + thulani::log_setup::init(false).expect("initializing logging"); + dotenv::dotenv()?; + + 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?; + log::info!("deleted memes: {memes_deleted:?}"); + + Ok(()) +} |
