forked from gorb/backend
feat: add /guilds/{uuid}members
Also makes it return user object with the query
This commit is contained in:
parent
746285e0fb
commit
c9a3e8c6c4
13 changed files with 141 additions and 42 deletions
|
@ -64,7 +64,7 @@ pub async fn get(
|
|||
|
||||
let channel = Channel::fetch_one(&data, channel_uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, channel.guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, channel.guild_uuid).await?;
|
||||
|
||||
let messages = channel
|
||||
.fetch_messages(&data, message_request.amount, message_request.offset)
|
||||
|
|
|
@ -27,7 +27,7 @@ pub async fn get(
|
|||
|
||||
let channel = Channel::fetch_one(&data, channel_uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, channel.guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, channel.guild_uuid).await?;
|
||||
|
||||
Ok(HttpResponse::Ok().json(channel))
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ pub async fn delete(
|
|||
|
||||
let channel = Channel::fetch_one(&data, channel_uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, channel.guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, channel.guild_uuid).await?;
|
||||
|
||||
channel.delete(&data).await?;
|
||||
|
||||
|
|
|
@ -36,8 +36,7 @@ pub async fn ws(
|
|||
|
||||
let channel = Channel::fetch_one(&data, channel_uuid).await?;
|
||||
|
||||
// Get server member from psql
|
||||
Member::fetch_one(&mut conn, uuid, channel.guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, channel.guild_uuid).await?;
|
||||
|
||||
let (mut res, mut session_1, stream) = actix_ws::handle(&req, stream)?;
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ pub async fn get(
|
|||
|
||||
global_checks(&data, uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
if let Ok(cache_hit) = data.get_cache_key(format!("{}_channels", guild_uuid)).await {
|
||||
return Ok(HttpResponse::Ok()
|
||||
|
@ -70,7 +70,7 @@ pub async fn create(
|
|||
|
||||
global_checks(&data, uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
// FIXME: Logic to check permissions, should probably be done in utils.rs
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ pub async fn upload(
|
|||
|
||||
global_checks(&data, uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
let mut guild = Guild::fetch_one(&mut conn, guild_uuid).await?;
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ pub async fn get(
|
|||
|
||||
global_checks(&data, uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
let guild = Guild::fetch_one(&mut conn, guild_uuid).await?;
|
||||
|
||||
|
@ -57,13 +57,13 @@ pub async fn create(
|
|||
|
||||
global_checks(&data, uuid).await?;
|
||||
|
||||
let member = Member::fetch_one(&mut conn, uuid, guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
let guild = Guild::fetch_one(&mut conn, guild_uuid).await?;
|
||||
|
||||
let custom_id = invite_request.as_ref().map(|ir| ir.custom_id.clone());
|
||||
|
||||
let invite = guild.create_invite(&mut conn, &member, custom_id).await?;
|
||||
let invite = guild.create_invite(&mut conn, uuid, custom_id).await?;
|
||||
|
||||
Ok(HttpResponse::Ok().json(invite))
|
||||
}
|
||||
|
|
30
src/api/v1/guilds/uuid/members.rs
Normal file
30
src/api/v1/guilds/uuid/members.rs
Normal file
|
@ -0,0 +1,30 @@
|
|||
use crate::{
|
||||
api::v1::auth::check_access_token, error::Error, structs::Member, utils::{get_auth_header, global_checks}, Data
|
||||
};
|
||||
use ::uuid::Uuid;
|
||||
use actix_web::{HttpRequest, HttpResponse, get, web};
|
||||
|
||||
#[get("{uuid}/members")]
|
||||
pub async fn get(
|
||||
req: HttpRequest,
|
||||
path: web::Path<(Uuid,)>,
|
||||
data: web::Data<Data>,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let headers = req.headers();
|
||||
|
||||
let auth_header = get_auth_header(headers)?;
|
||||
|
||||
let guild_uuid = path.into_inner().0;
|
||||
|
||||
let mut conn = data.pool.get().await?;
|
||||
|
||||
let uuid = check_access_token(auth_header, &mut conn).await?;
|
||||
|
||||
global_checks(&data, uuid).await?;
|
||||
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
let members = Member::fetch_all(&data, guild_uuid).await?;
|
||||
|
||||
Ok(HttpResponse::Ok().json(members))
|
||||
}
|
|
@ -7,6 +7,7 @@ mod channels;
|
|||
mod icon;
|
||||
mod invites;
|
||||
mod roles;
|
||||
mod members;
|
||||
|
||||
use crate::{
|
||||
api::v1::auth::check_access_token, error::Error, structs::{Guild, Member}, utils::{get_auth_header, global_checks}, Data
|
||||
|
@ -28,6 +29,8 @@ pub fn web() -> Scope {
|
|||
.service(invites::create)
|
||||
// Icon
|
||||
.service(icon::upload)
|
||||
// Members
|
||||
.service(members::get)
|
||||
}
|
||||
|
||||
/// `GET /api/v1/guilds/{uuid}` DESCRIPTION
|
||||
|
@ -81,7 +84,7 @@ pub async fn get(
|
|||
|
||||
global_checks(&data, uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
let guild = Guild::fetch_one(&mut conn, guild_uuid).await?;
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ pub async fn get(
|
|||
|
||||
let uuid = check_access_token(auth_header, &mut conn).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
if let Ok(cache_hit) = data.get_cache_key(format!("{}_roles", guild_uuid)).await {
|
||||
return Ok(HttpResponse::Ok()
|
||||
|
@ -66,7 +66,7 @@ pub async fn create(
|
|||
|
||||
global_checks(&data, uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
// FIXME: Logic to check permissions, should probably be done in utils.rs
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ pub async fn get(
|
|||
|
||||
global_checks(&data, uuid).await?;
|
||||
|
||||
Member::fetch_one(&mut conn, uuid, guild_uuid).await?;
|
||||
Member::check_membership(&mut conn, uuid, guild_uuid).await?;
|
||||
|
||||
if let Ok(cache_hit) = data.get_cache_key(format!("{}", role_uuid)).await {
|
||||
return Ok(HttpResponse::Ok()
|
||||
|
|
|
@ -42,7 +42,7 @@ pub async fn join(
|
|||
|
||||
let guild = Guild::fetch_one(&mut conn, invite.guild_uuid).await?;
|
||||
|
||||
Member::new(&mut conn, uuid, guild.uuid).await?;
|
||||
Member::new(&data, uuid, guild.uuid).await?;
|
||||
|
||||
Ok(HttpResponse::Ok().json(guild))
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ pub async fn get(req: HttpRequest, data: web::Data<Data>) -> Result<HttpResponse
|
|||
|
||||
let me = Me::get(&mut conn, uuid).await?;
|
||||
|
||||
let memberships = me.fetch_memberships(&mut conn).await?;
|
||||
let memberships = me.fetch_memberships(&data).await?;
|
||||
|
||||
Ok(HttpResponse::Ok().json(memberships))
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue