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!(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(())
}
|