From d03788af939060fb88309a9f464541df977dde10 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 12 Sep 2024 15:20:16 +0200 Subject: [PATCH] :bug: Ignore object thumbnail requests if file is already marked as deleted --- backend/src/app/rpc/commands/files.clj | 2 +- .../src/app/rpc/commands/files_thumbnails.clj | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/backend/src/app/rpc/commands/files.clj b/backend/src/app/rpc/commands/files.clj index cfcd85df7..8c80a93bd 100644 --- a/backend/src/app/rpc/commands/files.clj +++ b/backend/src/app/rpc/commands/files.clj @@ -273,7 +273,7 @@ (defn get-minimal-file [cfg id & {:as opts}] - (let [opts (assoc opts ::sql/columns [:id :modified-at :revn :data-ref-id :data-backend])] + (let [opts (assoc opts ::sql/columns [:id :modified-at :deleted-at :revn :data-ref-id :data-backend])] (db/get cfg :file {:id id} opts))) (defn get-file-etag diff --git a/backend/src/app/rpc/commands/files_thumbnails.clj b/backend/src/app/rpc/commands/files_thumbnails.clj index 8e9c2da1c..7afa8752b 100644 --- a/backend/src/app/rpc/commands/files_thumbnails.clj +++ b/backend/src/app/rpc/commands/files_thumbnails.clj @@ -233,7 +233,7 @@ "INSERT INTO file_tagged_object_thumbnail (file_id, object_id, tag, media_id) VALUES (?, ?, ?, ?) ON CONFLICT (file_id, object_id, tag) - DO UPDATE SET updated_at=?, media_id=?, deleted_at=null + DO UPDATE SET updated_at=?, media_id=?, deleted_at=? RETURNING *") (defn- persist-thumbnail! @@ -251,17 +251,19 @@ :content-type mtype :bucket "file-object-thumbnail"}))) - - (defn- create-file-object-thumbnail! - [{:keys [::sto/storage] :as cfg} file-id object-id media tag] - (let [tsnow (dt/now) - media (persist-thumbnail! storage media tsnow) + [{:keys [::sto/storage] :as cfg} file object-id media tag] + (let [file-id (:id file) + timestamp (dt/now) + media (persist-thumbnail! storage media timestamp) [th1 th2] (db/tx-run! cfg (fn [{:keys [::db/conn]}] (let [th1 (db/exec-one! conn [sql:get-file-object-thumbnail file-id object-id tag]) th2 (db/exec-one! conn [sql:create-file-object-thumbnail - file-id object-id tag (:id media) - tsnow (:id media)])] + file-id object-id tag + (:id media) + timestamp + (:id media) + (:deleted-at file)])] [th1 th2])))] (when (and (some? th1) @@ -294,8 +296,8 @@ (media/validate-media-size! media) (db/run! cfg files/check-edition-permissions! profile-id file-id) - - (create-file-object-thumbnail! cfg file-id object-id media (or tag "frame"))) + (when-let [file (files/get-minimal-file cfg file-id {::db/check-deleted false})] + (create-file-object-thumbnail! cfg file object-id media (or tag "frame")))) ;; --- MUTATION COMMAND: delete-file-object-thumbnail