aboutsummaryrefslogtreecommitdiff
path: root/src/bin/batch_delmeme.rs
blob: 03aa6aa29e4c0dd7e3de3227c1fda50d8009266d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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(),
        content:     Some("abc".to_owned()),
        metadata_id: meta.id,
        audio_id:    None,
        image_id:    None,
    };
    let meme = meme.save(conn, owner).await?;
    tracing::debug!("created demo meme: {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(())
}