From 5c2ff8b926c99208d4be322b724781803da64296 Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 25 Feb 2026 21:55:53 +0100 Subject: [PATCH] feat(utils/perm: changing return type for anyhow::Result --- src/utils/perm.rs | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/utils/perm.rs b/src/utils/perm.rs index 05cb8c3..11b78dc 100644 --- a/src/utils/perm.rs +++ b/src/utils/perm.rs @@ -1,9 +1,11 @@ +use anyhow::Result; use sqlx::{ PgPool, query_scalar, }; +use tracing::warn; -pub async fn is_whitelist(db: &PgPool, user_id: &str, guild_id: &str) -> Result { +pub async fn is_whitelist(db: &PgPool, user_id: &str, guild_id: &str) -> Result { let result: Option = query_scalar( "SELECT TRUE FROM guild_users gu \ LEFT JOIN users u ON u.user_id = gu.user_id \ @@ -22,9 +24,19 @@ pub async fn is_whitelist(db: &PgPool, user_id: &str, guild_id: &str) -> Result< Ok(result.is_some()) } -pub async fn is_owner(db: &PgPool, user_id: &str) -> Result { +pub async fn is_owner(db: &PgPool, user_id: &str) -> Result { + let result: bool = query_scalar( + "SELECT is_dev, is_buyer, is_owner FROM users WHERE user_id = $1 AND (is_dev = true OR is_buyer = true OR is_owner = true)", + ) + .bind(user_id) + .fetch_one(db) + .await?; + Ok(result) +} + +pub async fn is_buyer(db: &PgPool, user_id: &str) -> Result { let result: Option = query_scalar( - "SELECT TRUE FROM users WHERE user_id = $1 AND is_dev = true OR is_buyer = true OR is_owner = true", + "SELECT is_dev, is_buyer FROM users WHERE user_id = $1 AND (is_dev = true OR is_buyer = true)", ) .bind(user_id) .fetch_optional(db) @@ -32,19 +44,9 @@ pub async fn is_owner(db: &PgPool, user_id: &str) -> Result { Ok(result.is_some()) } -pub async fn is_buyer(db: &PgPool, user_id: &str) -> Result { +pub async fn is_dev(db: &PgPool, user_id: &str) -> Result { let result: Option = query_scalar( - "SELECT TRUE FROM users WHERE user_id = $1 AND is_dev = true OR is_buyer = true", - ) - .bind(user_id) - .fetch_optional(db) - .await?; - Ok(result.is_some()) -} - -pub async fn is_dev(db: &PgPool, user_id: &str) -> Result { - let result: Option = query_scalar( - "SELECT TRUE FROM users WHERE user_id = $1 AND is_dev = true", + "SELECT is_dev FROM users WHERE user_id = $1 AND is_dev = true", ) .bind(user_id) .fetch_optional(db)