From c4b39c56d4fe0144ed549587337ee37bf367a492 Mon Sep 17 00:00:00 2001 From: Paul <paulmakles@gmail.com> Date: Wed, 16 Jun 2021 14:15:53 +0100 Subject: [PATCH] Fix: Delete channel query failing due to empty unset. --- set_version.sh | 2 +- src/database/entities/channel.rs | 19 ++++++++++++------- src/database/permissions/server.rs | 2 +- src/notifications/subscriptions.rs | 1 - 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/set_version.sh b/set_version.sh index aea91d8..4881d51 100755 --- a/set_version.sh +++ b/set_version.sh @@ -1,3 +1,3 @@ #!/bin/bash -export version=0.5.0-alpha.1 +export version=0.5.0-alpha.2 echo "pub const VERSION: &str = \"${version}\";" > src/version.rs diff --git a/src/database/entities/channel.rs b/src/database/entities/channel.rs index 043799f..d110fa8 100644 --- a/src/database/entities/channel.rs +++ b/src/database/entities/channel.rs @@ -205,9 +205,15 @@ impl Channel { // Remove from server object. if let Channel::TextChannel { server, .. } = &self { let server = Ref::from_unchecked(server.clone()).fetch_server().await?; - let mut unset = doc! {}; + let mut update = doc! { + "$pull": { + "channels": id + } + }; if let Some(sys) = &server.system_messages { + let mut unset = doc! {}; + if let Some(cid) = &sys.user_joined { if id == cid { unset.insert("system_messages.user_joined", 1); @@ -231,6 +237,10 @@ impl Channel { unset.insert("system_messages.user_banned", 1); } } + + if unset.len() > 0 { + update.insert("$unset", unset); + } } get_collection("servers") @@ -238,12 +248,7 @@ impl Channel { doc! { "_id": server.id }, - doc! { - "$pull": { - "channels": id - }, - "$unset": unset - }, + update, None, ) .await diff --git a/src/database/permissions/server.rs b/src/database/permissions/server.rs index 8ca1086..6062c64 100644 --- a/src/database/permissions/server.rs +++ b/src/database/permissions/server.rs @@ -9,7 +9,7 @@ use std::ops; #[repr(u32)] pub enum ServerPermission { View = 0b00000000000000000000000000000001, // 1 - ManageMembers = 0b00000000000000000000000000000010, // 2 + ManageRoles = 0b00000000000000000000000000000010, // 2 ManageChannels = 0b00000000000000000000000000000100, // 4 ManageServer = 0b00000000000000000000000000001000, // 8 KickMembers = 0b00000000000000000000000000010000, // 16 diff --git a/src/notifications/subscriptions.rs b/src/notifications/subscriptions.rs index 86a54cb..4535a89 100644 --- a/src/notifications/subscriptions.rs +++ b/src/notifications/subscriptions.rs @@ -1,5 +1,4 @@ use crate::database::*; -use crate::util::result::Error; use super::hive::get_hive; use futures::StreamExt; -- GitLab