aboutsummaryrefslogtreecommitdiff
path: root/src/bin/batch_delmeme.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/batch_delmeme.rs')
-rw-r--r--src/bin/batch_delmeme.rs50
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(())
+}