diff --git a/src/api/v1/guilds/uuid/bans.rs b/src/api/v1/guilds/uuid/bans.rs index 52e0949..44ed48d 100644 --- a/src/api/v1/guilds/uuid/bans.rs +++ b/src/api/v1/guilds/uuid/bans.rs @@ -25,8 +25,8 @@ pub async fn get( let mut conn = app_state.pool.get().await?; - let caller = Member::check_membership(&mut conn, uuid, guild_uuid).await?; - caller + let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; + member .check_permission(&app_state, Permissions::BanMember) .await?; @@ -34,22 +34,3 @@ pub async fn get( Ok((StatusCode::OK, Json(all_guild_bans))) } - -pub async fn unban( - State(app_state): State>, - Path((guild_uuid, user_uuid)): Path<(Uuid, Uuid)>, - Extension(CurrentUser(uuid)): Extension>, -) -> Result { - global_checks(&app_state, uuid).await?; - - let mut conn = app_state.pool.get().await?; - - let caller = Member::check_membership(&mut conn, uuid, guild_uuid).await?; - caller.check_permission(&app_state, Permissions::BanMember).await?; - - let ban = GuildBan::fetch_one(&mut conn, guild_uuid, user_uuid).await?; - - ban.unban(&mut conn).await?; - - Ok(StatusCode::OK) -} diff --git a/src/api/v1/guilds/uuid/mod.rs b/src/api/v1/guilds/uuid/mod.rs index b9d8abf..2174932 100644 --- a/src/api/v1/guilds/uuid/mod.rs +++ b/src/api/v1/guilds/uuid/mod.rs @@ -7,7 +7,7 @@ use axum::{ extract::{Multipart, Path, State}, http::StatusCode, response::IntoResponse, - routing::{get, patch, post, delete}, + routing::{get, patch, post}, }; use bytes::Bytes; use uuid::Uuid; @@ -45,7 +45,6 @@ pub fn router() -> Router> { .route("/members", get(members::get)) // Bans .route("/bans", get(bans::get)) - .route("/bans/{uuid}", delete(bans::unban)) } /// `GET /api/v1/guilds/{uuid}` DESCRIPTION diff --git a/src/objects/member.rs b/src/objects/member.rs index ed6a77c..fcd0b6b 100644 --- a/src/objects/member.rs +++ b/src/objects/member.rs @@ -6,7 +6,11 @@ use serde::{Deserialize, Serialize}; use uuid::Uuid; use crate::{ - error::Error, objects::{GuildBan, Me, Permissions, Role}, schema::{guild_bans, guild_members}, AppState, Conn + AppState, Conn, + error::Error, + objects::{Me, Permissions, Role}, + schema::guild_bans, + schema::guild_members, }; use super::{User, load_or_empty}; @@ -165,10 +169,15 @@ impl Member { ) -> Result { let mut conn = app_state.pool.get().await?; - let banned = GuildBan::fetch_one(&mut conn, guild_uuid, user_uuid).await; + use guild_bans::dsl; + let banned = dsl::guild_bans + .filter(guild_bans::guild_uuid.eq(guild_uuid)) + .filter(guild_bans::user_uuid.eq(user_uuid)) + .execute(&mut conn) + .await; match banned { Ok(_) => Err(Error::Forbidden("User banned".to_string())), - Err(Error::SqlError(diesel::result::Error::NotFound)) => Ok(()), + Err(diesel::result::Error::NotFound) => Ok(()), Err(e) => Err(e.into()), }?;