diff --git a/src/database/guild_user.rs b/src/database/guild_user.rs index b69c66b..afb9f14 100644 --- a/src/database/guild_user.rs +++ b/src/database/guild_user.rs @@ -1,11 +1,12 @@ use sqlx::{PgPool, query, query_as, query_scalar}; use crate::models::guild_user::DbGuildUser; +use anyhow::Result; pub async fn get( db: &PgPool, user_id: &str, guild_id: &str, -) -> Result, sqlx::Error> { +) -> Result> { let guild_user = query_as!( DbGuildUser, "SELECT * FROM guild_users WHERE user_id = $1 AND guild_id = $2", @@ -21,7 +22,7 @@ pub async fn create( db: &PgPool, user_id: &str, guild_id: &str, -) -> Result<(), sqlx::Error> { +) -> Result<()> { query!( "INSERT INTO guild_users (user_id, guild_id) \ VALUES ($1, $2) \ @@ -38,7 +39,7 @@ pub async fn delete( db: &PgPool, user_id: &str, guild_id: &str, -) -> Result<(), sqlx::Error> { +) -> Result<()> { query!( "DELETE FROM guild_users WHERE user_id = $1 AND guild_id = $2", user_id, @@ -52,7 +53,7 @@ pub async fn delete( pub async fn delete_all_in_guild( db: &PgPool, guild_id: &str, -) -> Result<(), sqlx::Error> { +) -> Result<()> { query!("DELETE FROM guild_users WHERE guild_id = $1", guild_id) .execute(db) .await?; @@ -64,7 +65,7 @@ pub async fn add_xp( user_id: &str, guild_id: &str, amount: i32, -) -> Result<(), sqlx::Error> { +) -> Result<()> { query!( "UPDATE guild_users SET xp = xp + $1 \ WHERE user_id = $2 AND guild_id = $3", @@ -82,7 +83,7 @@ pub async fn set_level( user_id: &str, guild_id: &str, level: i32, -) -> Result<(), sqlx::Error> { +) -> Result<()> { query!( "UPDATE guild_users SET level = $1 \ WHERE user_id = $2 AND guild_id = $3", @@ -99,7 +100,7 @@ pub async fn get_xp( db: &PgPool, user_id: &str, guild_id: &str, -) -> Result, sqlx::Error> { +) -> Result> { let xp: Option = query_scalar( "SELECT xp FROM guild_users WHERE user_id = $1 AND guild_id = $2", ) @@ -114,7 +115,7 @@ pub async fn get_level( db: &PgPool, user_id: &str, guild_id: &str, -) -> Result, sqlx::Error> { +) -> Result> { let level: Option = query_scalar("SELECT level FROM guild_users WHERE user_id = $1 AND guild_id = $2") .bind(user_id) .bind(guild_id) @@ -128,7 +129,7 @@ pub async fn set_wl( user_id: &str, guild_id: &str, value: bool, -) -> Result<(), sqlx::Error> { +) -> Result<()> { query!( "UPDATE guild_users SET is_wl_user = $1 \ WHERE user_id = $2 AND guild_id = $3", @@ -144,7 +145,7 @@ pub async fn set_wl( pub async fn get_all_wl( db: &PgPool, guild_id: &str, -) -> Result, sqlx::Error> { +) -> Result> { let users = query_as!( DbGuildUser, "SELECT * FROM guild_users \ @@ -161,7 +162,7 @@ pub async fn set_invited_by( user_id: &str, guild_id: &str, inviter_id: &str, -) -> Result<(), sqlx::Error> { +) -> Result<()> { query!( "UPDATE guild_users SET invited_by = $1 \ WHERE user_id = $2 AND guild_id = $3", @@ -178,7 +179,7 @@ pub async fn increment_invitations( db: &PgPool, user_id: &str, guild_id: &str, -) -> Result<(), sqlx::Error> { +) -> Result<()> { query!( "UPDATE guild_users SET invitation_count = invitation_count + 1 \ WHERE user_id = $1 AND guild_id = $2", @@ -194,7 +195,7 @@ pub async fn decrement_invitations( db: &PgPool, user_id: &str, guild_id: &str, -) -> Result<(), sqlx::Error> { +) -> Result<()> { query!( "UPDATE guild_users SET invitation_count = GREATEST(invitation_count - 1, 0) \ WHERE user_id = $1 AND guild_id = $2", @@ -210,7 +211,7 @@ pub async fn leaderboard_xp( db: &PgPool, guild_id: &str, limit: i64, -) -> Result, sqlx::Error> { +) -> Result> { let users = query_as!( DbGuildUser, "SELECT * FROM guild_users \ @@ -229,7 +230,7 @@ pub async fn leaderboard_invitations( db: &PgPool, guild_id: &str, limit: i64, -) -> Result, sqlx::Error> { +) -> Result> { let users = query_as!( DbGuildUser, "SELECT * FROM guild_users \ @@ -243,9 +244,9 @@ pub async fn leaderboard_invitations( .await?; Ok(users) } -pub async fn get_or_create(db: &PgPool, user_id: &str, guild_id: &str) -> Result { +pub async fn get_or_create(db: &PgPool, user_id: &str, guild_id: &str) -> Result { create(db, user_id, guild_id).await?; get(db, user_id, guild_id) .await? - .ok_or_else(|| sqlx::Error::RowNotFound) + .ok_or_else(|| sqlx::Error::RowNotFound.into()) }