diff --git a/set_version.sh b/set_version.sh index 570c0159e74cce496ec42637d93f07ce96e880e6..2b32c6c0a13db502bb92463382290c5291d649a4 100755 --- a/set_version.sh +++ b/set_version.sh @@ -1,3 +1,3 @@ #!/bin/bash -export version=0.5.1-alpha.9 +export version=0.5.1-alpha.10 echo "pub const VERSION: &str = \"${version}\";" > src/version.rs diff --git a/src/routes/servers/ban_list.rs b/src/routes/servers/ban_list.rs index 5127a7aa4d164a2eec7a3ffb7bdc6a8f146a4d63..3993d3e7229bbbee587ad91f86b04704e5a10876 100644 --- a/src/routes/servers/ban_list.rs +++ b/src/routes/servers/ban_list.rs @@ -2,8 +2,17 @@ use crate::database::*; use crate::util::result::{Error, Result}; use futures::StreamExt; -use mongodb::bson::{doc, from_document}; +use mongodb::options::FindOptions; +use serde::{Serialize, Deserialize}; use rocket_contrib::json::JsonValue; +use mongodb::bson::{doc, from_document}; + +#[derive(Serialize, Deserialize)] +struct BannedUser { + _id: String, + username: String, + avatar: Option<File> +} #[get("/<target>/bans")] pub async fn req(user: User, target: Ref) -> Result<JsonValue> { @@ -32,13 +41,47 @@ pub async fn req(user: User, target: Ref) -> Result<JsonValue> { })?; let mut bans = vec![]; + let mut user_ids = vec![]; while let Some(result) = cursor.next().await { if let Ok(doc) = result { if let Ok(ban) = from_document::<Ban>(doc) { + user_ids.push(ban.id.user.clone()); bans.push(ban); } } } - Ok(json!(bans)) + let mut cursor = get_collection("users") + .find( + doc! { + "_id": { + "$in": user_ids + } + }, + FindOptions::builder() + .projection(doc! { + "username": 1, + "avatar": 1 + }) + .build(), + ) + .await + .map_err(|_| Error::DatabaseError { + operation: "find", + with: "users", + })?; + + let mut users = vec![]; + while let Some(result) = cursor.next().await { + if let Ok(doc) = result { + if let Ok(user) = from_document::<BannedUser>(doc) { + users.push(user); + } + } + } + + Ok(json!({ + "users": users, + "bans": bans + })) } diff --git a/src/routes/servers/server_edit.rs b/src/routes/servers/server_edit.rs index c3753963b1e9527eb4d83f2fa2dfe4586971cd21..3c5d8e86014c5e236ba44c2412b6d9ff24898b7e 100644 --- a/src/routes/servers/server_edit.rs +++ b/src/routes/servers/server_edit.rs @@ -2,7 +2,7 @@ use crate::notifications::events::ClientboundNotification; use crate::util::result::{Error, Result}; use crate::{database::*, notifications::events::RemoveServerField}; -use mongodb::bson::{doc, to_document}; +use mongodb::bson::{doc, to_bson, to_document}; use rocket_contrib::json::Json; use serde::{Deserialize, Serialize}; use validator::Validate; @@ -98,11 +98,11 @@ pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> { } if let Some(categories) = &data.categories { - set.insert("categories", to_document(&categories).map_err(|_| Error::DatabaseError { operation: "to_document", with: "categories" })?); + set.insert("categories", to_bson(&categories).map_err(|_| Error::DatabaseError { operation: "to_document", with: "categories" })?); } if let Some(system_messages) = &data.system_messages { - set.insert("system_messages", to_document(&system_messages).map_err(|_| Error::DatabaseError { operation: "to_document", with: "system_messages" })?); + set.insert("system_messages", to_bson(&system_messages).map_err(|_| Error::DatabaseError { operation: "to_document", with: "system_messages" })?); } let mut operations = doc! {}; diff --git a/src/version.rs b/src/version.rs index 1066b72df53899205b43d8dce29631668dde2a9e..c47024c76aba3ed53d7437d10b07fb32ba3c71e7 100644 --- a/src/version.rs +++ b/src/version.rs @@ -1 +1 @@ -pub const VERSION: &str = "0.5.1-alpha.9"; +pub const VERSION: &str = "0.5.1-alpha.10";