From aa1cf3e03a6f0f442fd0fa76708afe1cea37be2b Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 25 Jun 2024 11:54:52 +0200 Subject: [PATCH] :sparkles: Add some redundancy to delete_object task --- backend/src/app/tasks/delete_object.clj | 45 +++++++++++++++++-------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/backend/src/app/tasks/delete_object.clj b/backend/src/app/tasks/delete_object.clj index 557e35b59..87741b6cc 100644 --- a/backend/src/app/tasks/delete_object.clj +++ b/backend/src/app/tasks/delete_object.clj @@ -20,8 +20,13 @@ (defmethod delete-object :file [{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}] - (l/trc :hint "marking for deletion" :rel "file" :id (str id)) (when-let [file (db/get* conn :file {:id id} {::db/remove-deleted false})] + (l/trc :hint "marking for deletion" :rel "file" :id (str id)) + (db/update! conn :file + {:deleted-at deleted-at} + {:id id} + {::db/return-keys false}) + (when (and (:is-shared file) (not *team-deletion*)) ;; NOTE: we don't prevent file deletion on absorb operation failure @@ -49,27 +54,39 @@ (defmethod delete-object :project [{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}] (l/trc :hint "marking for deletion" :rel "project" :id (str id)) - (doseq [file (db/update! conn :file - {:deleted-at deleted-at} - {:project-id id} - {::db/return-keys [:id :deleted-at] - ::db/many true})] - (delete-object cfg (assoc file :object :file)))) + (db/update! conn :project + {:deleted-at deleted-at} + {:id id} + {::db/return-keys false}) + + (doseq [file (db/query conn :file + {:project-id id} + {::db/columns [:id :deleted-at]})] + (delete-object cfg (assoc file + :object :file + :deleted-at deleted-at)))) (defmethod delete-object :team [{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}] (l/trc :hint "marking for deletion" :rel "team" :id (str id)) + (db/update! conn :team + {:deleted-at deleted-at} + {:id id} + {::db/return-keys false}) + (db/update! conn :team-font-variant {:deleted-at deleted-at} - {:team-id id}) + {:team-id id} + {::db/return-keys false}) (binding [*team-deletion* true] - (doseq [project (db/update! conn :project - {:deleted-at deleted-at} - {:team-id id} - {::db/return-keys [:id :deleted-at] - ::db/many true})] - (delete-object cfg (assoc project :object :project))))) + (doseq [project (db/query conn :project + {:team-id id} + {::db/columns [:id :deleted-at]})] + (delete-object cfg (assoc project + :object :project + :deleted-at deleted-at))))) + (defmethod delete-object :default [_cfg props]