From aee6c751c64ee4aba356ff3dd467ee612c662a1f Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Sun, 20 Mar 2022 18:08:48 +0000 Subject: [PATCH] fix: strongly type member fetch all route --- src/routes/servers/member_fetch_all.rs | 28 +++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/routes/servers/member_fetch_all.rs b/src/routes/servers/member_fetch_all.rs index f0faf534..449c3034 100644 --- a/src/routes/servers/member_fetch_all.rs +++ b/src/routes/servers/member_fetch_all.rs @@ -1,13 +1,30 @@ -use revolt_quark::{models::User, perms, presence::presence_filter_online, Db, Ref, Result}; +use revolt_quark::{ + models::{Member, User}, + perms, + presence::presence_filter_online, + Db, Ref, Result, +}; -use rocket::serde::json::Value; +use rocket::serde::json::Json; +use serde::Serialize; + +/// # Member List +/// +/// Both lists are sorted by ID. +#[derive(Serialize, JsonSchema)] +pub struct AllMemberResponse { + /// List of members + members: Vec, + /// List of users + users: Vec, +} /// # Fetch Members /// /// Fetch all server members. #[openapi(tag = "Server Members")] #[get("//members")] -pub async fn req(db: &Db, user: User, target: Ref) -> Result { +pub async fn req(db: &Db, user: User, target: Ref) -> Result> { let server = target.as_server(db).await?; perms(&user).server(&server).calc(db).await?; @@ -33,8 +50,5 @@ pub async fn req(db: &Db, user: User, target: Ref) -> Result { members.sort_by(|a, b| a.id.user.cmp(&b.id.user)); users.sort_by(|a, b| a.id.cmp(&b.id)); - Ok(json!({ - "members": members, - "users": users - })) + Ok(Json(AllMemberResponse { members, users })) }