fix(bans): fix data format returned

This commit is contained in:
Paul Makles
2022-02-22 22:51:39 +00:00
parent 7b1a3dc7dd
commit 71c01e0817
2 changed files with 31 additions and 12 deletions

View File

@@ -34,11 +34,5 @@ pub async fn req(
let member = target.as_member(db, &server.id).await?;
// ! FIXME_PERMISSIONS
let ban = ServerBan {
id: member.id,
reason: data.reason,
};
db.insert_ban(&ban).await?;
Ok(Json(ban))
member.ban(db, data.reason).await.map(Json)
}

View File

@@ -6,18 +6,43 @@ use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct BannedUser {
_id: String,
username: String,
avatar: Option<File>,
#[serde(rename = "_id")]
pub id: String,
pub username: String,
pub avatar: Option<File>,
}
#[derive(Serialize, Deserialize)]
pub struct BanListResult {
users: Vec<BannedUser>,
bans: Vec<ServerBan>,
}
#[get("/<target>/bans")]
pub async fn req(db: &Db, user: User, target: Ref) -> Result<Json<Vec<ServerBan>>> {
pub async fn req(db: &Db, user: User, target: Ref) -> Result<Json<BanListResult>> {
let server = target.as_server(db).await?;
perms(&user)
.server(&server)
.throw_permission(db, Permission::BanMembers)
.await?;
db.fetch_bans(&server.id).await.map(Json)
let bans = db.fetch_bans(&server.id).await?;
let users = db
.fetch_users(
&bans
.iter()
.map(|x| &x.id.user)
.cloned()
.collect::<Vec<String>>(),
)
.await?
.into_iter()
.map(|x| BannedUser {
id: x.id,
username: x.username,
avatar: x.avatar,
})
.collect();
Ok(Json(BanListResult { users, bans }))
}