From ca04f4d5103db84149c15a90fc0d584794f3686e Mon Sep 17 00:00:00 2001 From: jan0660 <jan0660@tutanota.com> Date: Sun, 25 Jul 2021 16:49:27 +0200 Subject: [PATCH] Add member_count to /invites/:id --- src/database/entities/server.rs | 15 +++++++++++++++ src/routes/invites/invite_fetch.rs | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/database/entities/server.rs b/src/database/entities/server.rs index 0953a99..9bf95c2 100644 --- a/src/database/entities/server.rs +++ b/src/database/entities/server.rs @@ -425,4 +425,19 @@ impl Server { Ok(()) } + + pub async fn get_member_count(id: &str) -> Result<i64> { + Ok(get_collection("server_members") + .count_documents( + doc! { + "_id.server": id + }, + None, + ) + .await + .map_err(|_| Error::DatabaseError { + operation: "count_documents", + with: "server_members", + })?) + } } diff --git a/src/routes/invites/invite_fetch.rs b/src/routes/invites/invite_fetch.rs index e76039d..a905c2d 100644 --- a/src/routes/invites/invite_fetch.rs +++ b/src/routes/invites/invite_fetch.rs @@ -21,6 +21,7 @@ pub enum InviteResponse { user_name: String, #[serde(skip_serializing_if = "Option::is_none")] user_avatar: Option<File>, + member_count: i64, }, } @@ -41,6 +42,7 @@ pub async fn req(target: Ref) -> Result<JsonValue> { let server = Ref::from_unchecked(server).fetch_server().await?; Ok(json!(InviteResponse::Server { + member_count: Server::get_member_count(&server.id).await?, server_id: server.id, server_name: server.name, server_icon: server.icon, -- GitLab