mirror of
https://github.com/penpot/penpot.git
synced 2025-04-01 01:21:21 -05:00
✨ Add some redundancy to delete_object task
This commit is contained in:
parent
3b5b81b08f
commit
aa1cf3e03a
1 changed files with 31 additions and 14 deletions
|
@ -20,8 +20,13 @@
|
||||||
|
|
||||||
(defmethod delete-object :file
|
(defmethod delete-object :file
|
||||||
[{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}]
|
[{: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})]
|
(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)
|
(when (and (:is-shared file)
|
||||||
(not *team-deletion*))
|
(not *team-deletion*))
|
||||||
;; NOTE: we don't prevent file deletion on absorb operation failure
|
;; NOTE: we don't prevent file deletion on absorb operation failure
|
||||||
|
@ -49,27 +54,39 @@
|
||||||
(defmethod delete-object :project
|
(defmethod delete-object :project
|
||||||
[{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}]
|
[{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}]
|
||||||
(l/trc :hint "marking for deletion" :rel "project" :id (str id))
|
(l/trc :hint "marking for deletion" :rel "project" :id (str id))
|
||||||
(doseq [file (db/update! conn :file
|
(db/update! conn :project
|
||||||
{:deleted-at deleted-at}
|
{:deleted-at deleted-at}
|
||||||
{:project-id id}
|
{:id id}
|
||||||
{::db/return-keys [:id :deleted-at]
|
{::db/return-keys false})
|
||||||
::db/many true})]
|
|
||||||
(delete-object cfg (assoc file :object :file))))
|
(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
|
(defmethod delete-object :team
|
||||||
[{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}]
|
[{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}]
|
||||||
(l/trc :hint "marking for deletion" :rel "team" :id (str id))
|
(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
|
(db/update! conn :team-font-variant
|
||||||
{:deleted-at deleted-at}
|
{:deleted-at deleted-at}
|
||||||
{:team-id id})
|
{:team-id id}
|
||||||
|
{::db/return-keys false})
|
||||||
|
|
||||||
(binding [*team-deletion* true]
|
(binding [*team-deletion* true]
|
||||||
(doseq [project (db/update! conn :project
|
(doseq [project (db/query conn :project
|
||||||
{:deleted-at deleted-at}
|
{:team-id id}
|
||||||
{:team-id id}
|
{::db/columns [:id :deleted-at]})]
|
||||||
{::db/return-keys [:id :deleted-at]
|
(delete-object cfg (assoc project
|
||||||
::db/many true})]
|
:object :project
|
||||||
(delete-object cfg (assoc project :object :project)))))
|
:deleted-at deleted-at)))))
|
||||||
|
|
||||||
|
|
||||||
(defmethod delete-object :default
|
(defmethod delete-object :default
|
||||||
[_cfg props]
|
[_cfg props]
|
||||||
|
|
Loading…
Add table
Reference in a new issue