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