From cf7bb832dad0c25052630ddf6c598e48f2c28d4e Mon Sep 17 00:00:00 2001 From: Paul <paulmakles@gmail.com> Date: Mon, 3 May 2021 21:02:12 +0100 Subject: [PATCH] Really make sure MongoDB driver can't screw up. --- set_version.sh | 2 +- src/routes/channels/edit_channel.rs | 20 +++++++++++--------- src/routes/users/edit_user.rs | 18 ++++++++++-------- src/version.rs | 2 +- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/set_version.sh b/set_version.sh index f1ba005..ffe5b03 100755 --- a/set_version.sh +++ b/set_version.sh @@ -1,3 +1,3 @@ #!/bin/bash -export version=0.4.1-alpha.7-patch.0 +export version=0.4.1-alpha.7-patch.2 echo "pub const VERSION: &str = \"${version}\";" > src/version.rs diff --git a/src/routes/channels/edit_channel.rs b/src/routes/channels/edit_channel.rs index 8271020..5242ec9 100644 --- a/src/routes/channels/edit_channel.rs +++ b/src/routes/channels/edit_channel.rs @@ -26,7 +26,7 @@ pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> { data.validate() .map_err(|error| Error::FailedValidation { error })?; - if data.name.is_none() || data.description.is_none() || data.icon.is_none() || data.remove.is_none() { + if data.name.is_none() && data.description.is_none() && data.icon.is_none() && data.remove.is_none() { return Ok(()) } @@ -85,14 +85,16 @@ pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> { operations.insert("$unset", unset); } - get_collection("channels") - .update_one( - doc! { "_id": &id }, - operations, - None - ) - .await - .map_err(|_| Error::DatabaseError { operation: "update_one", with: "channel" })?; + if operations.len() > 0 { + get_collection("channels") + .update_one( + doc! { "_id": &id }, + operations, + None + ) + .await + .map_err(|_| Error::DatabaseError { operation: "update_one", with: "channel" })?; + } ClientboundNotification::ChannelUpdate { id: id.clone(), diff --git a/src/routes/users/edit_user.rs b/src/routes/users/edit_user.rs index 54747a3..5ce6b24 100644 --- a/src/routes/users/edit_user.rs +++ b/src/routes/users/edit_user.rs @@ -35,7 +35,7 @@ pub async fn req(user: User, data: Json<Data>, _ignore_id: String) -> Result<()> data.validate() .map_err(|error| Error::FailedValidation { error })?; - if data.status.is_none() || data.profile.is_none() || data.avatar.is_none() || data.remove.is_none() { + if data.status.is_none() && data.profile.is_none() && data.avatar.is_none() && data.remove.is_none() { return Ok(()) } @@ -119,13 +119,15 @@ pub async fn req(user: User, data: Json<Data>, _ignore_id: String) -> Result<()> operations.insert("$unset", unset); } - get_collection("users") - .update_one(doc! { "_id": &user.id }, operations, None) - .await - .map_err(|_| Error::DatabaseError { - operation: "update_one", - with: "user", - })?; + if operations.len() > 0 { + get_collection("users") + .update_one(doc! { "_id": &user.id }, operations, None) + .await + .map_err(|_| Error::DatabaseError { + operation: "update_one", + with: "user", + })?; + } if let Some(status) = &data.status { ClientboundNotification::UserUpdate { diff --git a/src/version.rs b/src/version.rs index 4611a2e..f0629a0 100644 --- a/src/version.rs +++ b/src/version.rs @@ -1 +1 @@ -pub const VERSION: &str = "0.4.1-alpha.7-patch.0"; +pub const VERSION: &str = "0.4.1-alpha.7-patch.2"; -- GitLab