From dadad271b4d5924700c0be53df9185d539086a49 Mon Sep 17 00:00:00 2001
From: Paul <paulmakles@gmail.com>
Date: Fri, 19 Feb 2021 14:12:21 +0000
Subject: [PATCH] Mark attachments as deleted when deleting messages.

---
 src/database/entities/message.rs | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/database/entities/message.rs b/src/database/entities/message.rs
index 9fbffd3..bdce178 100644
--- a/src/database/entities/message.rs
+++ b/src/database/entities/message.rs
@@ -201,6 +201,26 @@ impl Message {
     }
 
     pub async fn delete(&self) -> Result<()> {
+        if let Some(attachment) = &self.attachment {
+            get_collection("attachments")
+                .update_one(
+                    doc! {
+                        "_id": &attachment.id
+                    },
+                    doc! {
+                        "$set": {
+                            "deleted": true
+                        }
+                    },
+                    None
+                )
+                .await
+                .map_err(|_| Error::DatabaseError {
+                    operation: "update_one",
+                    with: "attachment",
+                })?;
+        }
+
         get_collection("messages")
             .delete_one(
                 doc! {
-- 
GitLab