Fix: Delete channel query failing due to empty unset.

This commit is contained in:
Paul
2021-06-16 14:15:53 +01:00
parent f33611aee6
commit c4b39c56d4
4 changed files with 14 additions and 10 deletions

View File

@@ -1,3 +1,3 @@
#!/bin/bash #!/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 echo "pub const VERSION: &str = \"${version}\";" > src/version.rs

View File

@@ -205,9 +205,15 @@ impl Channel {
// Remove from server object. // Remove from server object.
if let Channel::TextChannel { server, .. } = &self { if let Channel::TextChannel { server, .. } = &self {
let server = Ref::from_unchecked(server.clone()).fetch_server().await?; 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 { if let Some(sys) = &server.system_messages {
let mut unset = doc! {};
if let Some(cid) = &sys.user_joined { if let Some(cid) = &sys.user_joined {
if id == cid { if id == cid {
unset.insert("system_messages.user_joined", 1); unset.insert("system_messages.user_joined", 1);
@@ -231,6 +237,10 @@ impl Channel {
unset.insert("system_messages.user_banned", 1); unset.insert("system_messages.user_banned", 1);
} }
} }
if unset.len() > 0 {
update.insert("$unset", unset);
}
} }
get_collection("servers") get_collection("servers")
@@ -238,12 +248,7 @@ impl Channel {
doc! { doc! {
"_id": server.id "_id": server.id
}, },
doc! { update,
"$pull": {
"channels": id
},
"$unset": unset
},
None, None,
) )
.await .await

View File

@@ -9,7 +9,7 @@ use std::ops;
#[repr(u32)] #[repr(u32)]
pub enum ServerPermission { pub enum ServerPermission {
View = 0b00000000000000000000000000000001, // 1 View = 0b00000000000000000000000000000001, // 1
ManageMembers = 0b00000000000000000000000000000010, // 2 ManageRoles = 0b00000000000000000000000000000010, // 2
ManageChannels = 0b00000000000000000000000000000100, // 4 ManageChannels = 0b00000000000000000000000000000100, // 4
ManageServer = 0b00000000000000000000000000001000, // 8 ManageServer = 0b00000000000000000000000000001000, // 8
KickMembers = 0b00000000000000000000000000010000, // 16 KickMembers = 0b00000000000000000000000000010000, // 16

View File

@@ -1,5 +1,4 @@
use crate::database::*; use crate::database::*;
use crate::util::result::Error;
use super::hive::get_hive; use super::hive::get_hive;
use futures::StreamExt; use futures::StreamExt;