From d649248b17cd3ac20a499464b559c7d83e9236fb Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Mon, 28 Nov 2022 10:59:46 -0500 Subject: db: run migrations in db connect, upgrade diesel --- src/commands/meme/create.rs | 14 +++++++------- src/commands/meme/delete.rs | 4 ++-- src/commands/meme/history.rs | 23 ++++++++++++----------- src/commands/meme/invoke.rs | 40 ++++++++++++++++++++++++++-------------- src/commands/meme/mod.rs | 2 +- 5 files changed, 48 insertions(+), 35 deletions(-) (limited to 'src/commands') diff --git a/src/commands/meme/create.rs b/src/commands/meme/create.rs index 11af7e9..dce5213 100644 --- a/src/commands/meme/create.rs +++ b/src/commands/meme/create.rs @@ -54,7 +54,7 @@ pub fn addmeme(ctx: &mut Context, msg: &Message, args: Args) -> Result<()> { let text = if text.is_empty() { None } else { Some(text) }; - let conn = connection()?; + let mut conn = connection()?; let image = msg.attachments.first(); @@ -65,7 +65,7 @@ pub fn addmeme(ctx: &mut Context, msg: &Message, args: Args) -> Result<()> { let image_id = image.map(|att| { let data = att.download()?; - Image::create(&conn, &att.filename, data, msg.author.id.0) + Image::create(&mut conn, &att.filename, data, msg.author.id.0) }).transpose()?; let save_result = NewMeme { @@ -74,7 +74,7 @@ pub fn addmeme(ctx: &mut Context, msg: &Message, args: Args) -> Result<()> { image_id, audio_id: None, metadata_id: 0, - }.save(&conn, msg.author.id.0).map(|_| {}); + }.save(&mut conn, msg.author.id.0).map(|_| {}); use diesel::result::DatabaseErrorKind; match save_result { @@ -147,13 +147,13 @@ pub fn addaudiomeme(ctx: &mut Context, msg: &Message, args: Args) -> Result<()> let text = args.rest().to_owned(); let text = if text.is_empty() { None } else { Some(text) }; - let conn = connection()?; + let mut conn = connection()?; let image = msg.attachments.first() .ok_or(anyhow!("no attachment")) .and_then(|att| { let data = att.download()?; - Image::create(&conn, &att.filename, data, msg.author.id.0) + Image::create(&mut conn, &att.filename, data, msg.author.id.0) }) .ok(); @@ -165,7 +165,7 @@ pub fn addaudiomeme(ctx: &mut Context, msg: &Message, args: Args) -> Result<()> return ctx.send(msg.channel_id, "🔇🔇🔇🔕🔕🔕🔕🔕🔇🔕🔕🔇🔕🔕📣📢📣📢📣", msg.tts); } - let audio_id = Audio::create(&conn, audio_data, msg.author.id.0)?; + let audio_id = Audio::create(&mut conn, audio_data, msg.author.id.0)?; let save_result = NewMeme { title, @@ -173,7 +173,7 @@ pub fn addaudiomeme(ctx: &mut Context, msg: &Message, args: Args) -> Result<()> image_id: image, audio_id: Some(audio_id), metadata_id: 0, - }.save(&conn, msg.author.id.0).map(|_| {}); + }.save(&mut conn, msg.author.id.0).map(|_| {}); use diesel::result::DatabaseErrorKind; match save_result { diff --git a/src/commands/meme/delete.rs b/src/commands/meme/delete.rs index e5e4333..7eafc80 100644 --- a/src/commands/meme/delete.rs +++ b/src/commands/meme/delete.rs @@ -26,9 +26,9 @@ use crate::{ pub fn delmeme(ctx: &mut Context, msg: &Message, mut args: Args) -> Result<()> { let title = args.single_quoted::()?; - let conn = connection()?; + let mut conn = connection()?; - match delete_meme(&conn, &title, msg.author.id.0) { + match delete_meme(&mut conn, &title, msg.author.id.0) { Ok(_) => msg.react(ctx, "💀"), Err(e) => { if let Some(NotFound) = e.downcast_ref::() { diff --git a/src/commands/meme/history.rs b/src/commands/meme/history.rs index 8186f57..f9e8851 100644 --- a/src/commands/meme/history.rs +++ b/src/commands/meme/history.rs @@ -51,9 +51,9 @@ static CLEAN_DATE_FORMAT: &'static str = "%b %-e %Y"; #[command] #[aliases("what")] pub fn wat(ctx: &mut Context, msg: &Message, _: Args) -> Result<()> { - let conn = connection()?; + let mut conn = connection()?; - let record = match InvocationRecord::last(&conn) { + let record = match InvocationRecord::last(&mut conn) { Ok(x) => x, Err(e) => { if let Some(NotFound) = e.downcast_ref::() { @@ -66,11 +66,11 @@ pub fn wat(ctx: &mut Context, msg: &Message, _: Args) -> Result<()> { }, }; - let meme = Meme::find(&conn, record.meme_id); + let meme = Meme::find(&mut conn, record.meme_id); match meme { Ok(ref meme) => { - let metadata = Metadata::find(&conn, meme.metadata_id)?; + let metadata = Metadata::find(&mut conn, meme.metadata_id)?; let author = CONFIG.discord.guild().member(&ctx, metadata.created_by as u64)?; ctx.send(msg.channel_id, @@ -95,7 +95,7 @@ pub fn wat(ctx: &mut Context, msg: &Message, _: Args) -> Result<()> { pub fn history(ctx: &mut Context, msg: &Message, mut args: Args) -> Result<()> { use itertools::Itertools; - let conn = connection()?; + let mut conn = connection()?; let n = args.single_quoted::().unwrap_or(CONFIG.default_hist); @@ -106,7 +106,7 @@ pub fn history(ctx: &mut Context, msg: &Message, mut args: Args) -> Result<()> { let n = n.min(CONFIG.max_hist); - let records = InvocationRecord::last_n(&conn, n)?; + let records = InvocationRecord::last_n(&mut conn, n)?; if records.len() == 0 { info!("no memes in history"); @@ -123,9 +123,9 @@ pub fn history(ctx: &mut Context, msg: &Message, mut args: Args) -> Result<()> { let ago = TIME_FORMATTER.convert((chrono::Utc::now() - dt).to_std().unwrap()); let rand = if rec.random { "R, " } else { "" }; - Meme::find(&conn, rec.meme_id) + Meme::find(&mut conn, rec.meme_id) .and_then(|meme| { - Metadata::find(&conn, meme.metadata_id).map(|metadata| (metadata, meme)) + Metadata::find(&mut conn, meme.metadata_id).map(|metadata| (metadata, meme)) }) .map(|(metadata, meme)| { let author_name = CONFIG.discord.guild().member(&ctx, metadata.created_by as u64).map(|m| m.display_name().into_owned()).unwrap_or("???".to_owned()); @@ -157,8 +157,8 @@ pub fn stats(ctx: &mut Context, msg: &Message, _: Args) -> Result<()> { user::User, }; - let conn = connection()?; - let stats = db::stats(&conn)?; + let mut conn = connection()?; + let stats = db::stats(&mut conn)?; debug!("reporting stats"); @@ -332,5 +332,6 @@ pub fn query(ctx: &mut Context, msg: &Message, mut args: Args) -> Result<()> { return ctx.send(msg.channel_id, "no match".to_owned(), msg.tts); } + ctx.send(msg.channel_id, &result, msg.tts) -} \ No newline at end of file +} diff --git a/src/commands/meme/invoke.rs b/src/commands/meme/invoke.rs index c5ca502..de0272f 100644 --- a/src/commands/meme/invoke.rs +++ b/src/commands/meme/invoke.rs @@ -37,6 +37,18 @@ pub fn omen(ctx: &mut Context, msg: &Message, _args: Args) -> Result<()> { _meme(ctx, msg, args, AudioPlayback::Optional) } +#[command] +pub fn silentomen(ctx: &mut Context, msg: &Message, _args: Args) -> Result<()> { + let args = Args::new("", &[]); + _meme(ctx, msg, args, AudioPlayback::Prohibited) +} + +#[command] +pub fn audioomen(ctx: &mut Context, msg: &Message, _args: Args) -> Result<()> { + let args = Args::new("", &[]); + _meme(ctx, msg, args, AudioPlayback::Required) +} + #[command] #[aliases("audiomeme", "audiomem")] pub fn audio_meme(ctx: &mut Context, msg: &Message, args: Args) -> Result<()> { @@ -63,10 +75,10 @@ fn _meme(ctx: &mut Context, msg: &Message, args: Args, audio_playback: AudioPlay let search = args.raw().join(" "); - let conn = connection()?; - let mem = match find_meme(&conn, search) { + let mut conn = connection()?; + let mem = match find_meme(&mut conn, search) { Ok(x) => { - InvocationRecord::create(&conn, msg.author.id.0, msg.id.0, x.id, false)?; + InvocationRecord::create(&mut conn, msg.author.id.0, msg.id.0, x.id, false)?; x }, @@ -81,24 +93,24 @@ fn _meme(ctx: &mut Context, msg: &Message, args: Args, audio_playback: AudioPlay }, }; - send_meme(ctx, &mem, &conn, msg) + send_meme(ctx, &mem, &mut conn, msg) } fn rand_meme(ctx: &Context, message: &Message, audio_playback: AudioPlayback) -> Result<()> { - let conn = connection()?; + let mut conn = connection()?; let should_audio = ctx.users_listening()?; let mem = match audio_playback { - AudioPlayback::Required => db::rand_audio_meme(&conn), - AudioPlayback::Optional => db::rand_meme(&conn, should_audio), - AudioPlayback::Prohibited => db::rand_silent_meme(&conn), + AudioPlayback::Required => db::rand_audio_meme(&mut conn), + AudioPlayback::Optional => db::rand_meme(&mut conn, should_audio), + AudioPlayback::Prohibited => db::rand_silent_meme(&mut conn), }; match mem { Ok(mem) => { - InvocationRecord::create(&conn, message.author.id.0, message.id.0, mem.id, true)?; - send_meme(ctx, &mem, &conn, message)?; + InvocationRecord::create(&mut conn, message.author.id.0, message.id.0, mem.id, true)?; + send_meme(ctx, &mem, &mut conn, message)?; Ok(()) }, Err(e) => { @@ -121,13 +133,13 @@ fn rand_meme(ctx: &Context, message: &Message, audio_playback: AudioPlayback) -> pub fn rare_meme(ctx: &mut Context, msg: &Message, _args: Args) -> Result<()> { let should_audio = ctx.users_listening()?; - let conn = connection()?; - let meme = db::rare_meme(&conn, should_audio); + let mut conn = connection()?; + let meme = db::rare_meme(&mut conn, should_audio); match meme { Ok(meme) => { - InvocationRecord::create(&conn, msg.author.id.0, msg.id.0, meme.id, true)?; - send_meme(ctx, &meme, &conn, msg) + InvocationRecord::create(&mut conn, msg.author.id.0, msg.id.0, meme.id, true)?; + send_meme(ctx, &meme, &mut conn, msg) }, Err(e) => { match e.downcast_ref::() { diff --git a/src/commands/meme/mod.rs b/src/commands/meme/mod.rs index ee39d55..d816a93 100644 --- a/src/commands/meme/mod.rs +++ b/src/commands/meme/mod.rs @@ -51,7 +51,7 @@ group!({ ], }); -fn send_meme(ctx: &Context, t: &Meme, conn: &PgConnection, msg: &Message) -> Result<()> { +fn send_meme(ctx: &Context, t: &Meme, conn: &mut PgConnection, msg: &Message) -> Result<()> { let should_tts = t.content.as_ref().map(|t| t.len() > 0).unwrap_or(false) && thread_rng().gen::() % 25 == 0; -- cgit v1.3.1