From f09280260ea7e036fbd11722fda97a61dc6c3970 Mon Sep 17 00:00:00 2001 From: minneelyyyy Date: Tue, 10 Dec 2024 15:41:49 -0500 Subject: [PATCH] some better transaction usage --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/commands/self_roles/color.rs | 7 ++++--- src/commands/self_roles/name.rs | 8 ++++---- src/commands/self_roles/register.rs | 9 +++++---- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5b35a14..2c43a77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -202,7 +202,7 @@ dependencies = [ [[package]] name = "bot" -version = "0.1.0" +version = "0.1.1" dependencies = [ "clap", "dotenv", diff --git a/Cargo.toml b/Cargo.toml index dbfd274..92f95f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bot" -version = "0.1.0" +version = "0.1.1" edition = "2021" [dependencies] diff --git a/src/commands/self_roles/color.rs b/src/commands/self_roles/color.rs index 4bfbb5a..44410ab 100644 --- a/src/commands/self_roles/color.rs +++ b/src/commands/self_roles/color.rs @@ -59,9 +59,9 @@ pub async fn color(ctx: Context<'_>, #[autocomplete = "autocomplete_colors"] col Color::from_rgb(rgb.r, rgb.g, rgb.b) }; - let mut tx = ctx.data().database.begin().await?; - if let Some(guild) = ctx.guild_id() { + let mut tx = ctx.data().database.begin().await?; + match super::get_user_role(ctx.author().id, guild, &mut *tx).await? { Some(role) => { guild.edit_role(ctx, role, EditRole::new().colour(color)).await?; @@ -82,13 +82,14 @@ pub async fn color(ctx: Context<'_>, #[autocomplete = "autocomplete_colors"] col .bind(role.id.get() as i64) .bind(guild.get() as i64) .execute(&mut *tx).await?; + + tx.commit().await?; let member = guild.member(ctx, ctx.author().id).await?; member.add_role(ctx, role.clone()).await?; ctx.reply(format!("You have been given the {} role!", role)).await?; - tx.commit().await?; return Ok(()); } } diff --git a/src/commands/self_roles/name.rs b/src/commands/self_roles/name.rs index 59389e5..b9fa4a5 100644 --- a/src/commands/self_roles/name.rs +++ b/src/commands/self_roles/name.rs @@ -6,9 +6,9 @@ use poise::serenity_prelude::EditRole; /// Change the name of your personal role #[poise::command(slash_command, prefix_command)] pub async fn name(ctx: Context<'_>, name: String) -> Result<(), Error> { - let mut tx = ctx.data().database.begin().await?; - if let Some(guild) = ctx.guild_id() { + let mut tx = ctx.data().database.begin().await?; + let role = match super::get_user_role(ctx.author().id, guild, &mut *tx).await? { Some(role) => role, None => { @@ -20,11 +20,11 @@ pub async fn name(ctx: Context<'_>, name: String) -> Result<(), Error> { .bind(guild.get() as i64) .execute(&mut *tx).await?; + tx.commit().await?; + let member = guild.member(ctx, ctx.author().id).await?; member.add_role(ctx, role.clone()).await?; - tx.commit().await?; - ctx.reply(format!("You've been given the {} role!", role)).await?; return Ok(()); diff --git a/src/commands/self_roles/register.rs b/src/commands/self_roles/register.rs index 40d432c..2538db1 100644 --- a/src/commands/self_roles/register.rs +++ b/src/commands/self_roles/register.rs @@ -5,10 +5,10 @@ use poise::serenity_prelude as serenity; /// Register an existing role as a user's custom role #[poise::command(slash_command, prefix_command, required_permissions = "MANAGE_ROLES")] -pub async fn register(ctx: Context<'_>, user: serenity::User, role: serenity::Role) -> Result<(), Error> { - let mut tx = ctx.data().database.begin().await?; - +pub async fn register(ctx: Context<'_>, user: serenity::User, role: serenity::Role) -> Result<(), Error> { if let Some(guild) = ctx.guild_id() { + let mut tx = ctx.data().database.begin().await?; + match super::get_user_role(user.id, guild, &mut *tx).await? { Some(role) => { let role = guild.role(ctx, role).await?; @@ -20,6 +20,8 @@ pub async fn register(ctx: Context<'_>, user: serenity::User, role: serenity::Ro .bind(guild.get() as i64) .bind(role.id.get() as i64) .execute(&mut *tx).await?; + + tx.commit().await?; let member = guild.member(ctx, user.id).await?; member.add_role(ctx, role.id).await?; @@ -31,6 +33,5 @@ pub async fn register(ctx: Context<'_>, user: serenity::User, role: serenity::Ro ctx.reply("This command can only be run in a guild!").await?; } - tx.commit().await?; Ok(()) }