diff --git a/src/database/entities/autumn.rs b/src/database/entities/autumn.rs index 8c57250b..0838f998 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 0ef9f01f..35f484d2 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 055f2ec7..d926ec09 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 5dfde797..eace4eb1 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, _ignore_id: String) -> Result .publish(user.id.clone()) .await .ok(); + + if let Some(old_avatar) = user.avatar { + old_avatar.delete().await?; + } } Ok(())