diff --git a/src/database/entities/autumn.rs b/src/database/entities/autumn.rs
index 8c57250bfdadd26fc5aa33fa6ee44560319bd277..0838f9982776929dda4df528e86dd4f93bab262e 100644
--- a/src/database/entities/autumn.rs
+++ b/src/database/entities/autumn.rs
@@ -86,4 +86,25 @@ impl File {
             Err(Error::UnknownAttachment)
         }
     }
+
+    pub async fn delete(&self) -> Result<()> {
+        get_collection("attachments")
+            .update_one(
+                doc! {
+                    "_id": &self.id
+                },
+                doc! {
+                    "$set": {
+                        "deleted": true
+                    }
+                },
+                None,
+            )
+            .await
+            .map(|_| ())
+            .map_err(|_| Error::DatabaseError {
+                operation: "update_one",
+                with: "attachment",
+            })
+    }
 }
diff --git a/src/database/entities/message.rs b/src/database/entities/message.rs
index 0ef9f01fb9d97225599c777410288376483113a1..35f484d2eae336a4088c8513acbd4473029e821d 100644
--- a/src/database/entities/message.rs
+++ b/src/database/entities/message.rs
@@ -236,23 +236,7 @@ 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",
-                })?;
+            attachment.delete().await?;
         }
 
         get_collection("messages")
diff --git a/src/database/migrations/scripts.rs b/src/database/migrations/scripts.rs
index 055f2ec70b1e51fdd87b4666b0154af1dbd23772..d926ec09497a16c7e1f6308ba4f35da246c8382e 100644
--- a/src/database/migrations/scripts.rs
+++ b/src/database/migrations/scripts.rs
@@ -10,7 +10,7 @@ struct MigrationInfo {
     revision: i32,
 }
 
-pub const LATEST_REVISION: i32 = 1;
+pub const LATEST_REVISION: i32 = 2;
 
 pub async fn migrate_database() {
     let migrations = get_collection("migrations");
diff --git a/src/routes/users/edit_user.rs b/src/routes/users/edit_user.rs
index 5dfde797ed2d5135c633dbc84d5352430ce5346d..eace4eb1b832bec04eb0a1447f0b0589d3b674ca 100644
--- a/src/routes/users/edit_user.rs
+++ b/src/routes/users/edit_user.rs
@@ -67,6 +67,10 @@ pub async fn req(user: User, mut data: Json<Data>, _ignore_id: String) -> Result
         .publish(user.id.clone())
         .await
         .ok();
+
+        if let Some(old_avatar) = user.avatar {
+            old_avatar.delete().await?;
+        }
     }
 
     Ok(())