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 diff --git a/backend/src/app/srepl/helpers.clj b/backend/src/app/srepl/helpers.clj index 38ea61dd8..702790eba 100644 --- a/backend/src/app/srepl/helpers.clj +++ b/backend/src/app/srepl/helpers.clj @@ -75,6 +75,7 @@ :created-at (:created-at file) :modified-at (:modified-at file) :data-backend nil + :data-ref-id nil :has-media-trimmed false} {:id (:id file)}))) diff --git a/backend/src/app/tasks/file_gc.clj b/backend/src/app/tasks/file_gc.clj index 07bc7ffba..a903a6730 100644 --- a/backend/src/app/tasks/file_gc.clj +++ b/backend/src/app/tasks/file_gc.clj @@ -133,7 +133,13 @@ file)) (def ^:private sql:get-files-for-library - "SELECT f.id, f.data, f.modified_at, f.features, f.version + "SELECT f.id, + f.data, + f.modified_at, + f.features, + f.version, + f.data_backend, + f.data_ref_id FROM file AS f LEFT JOIN file_library_rel AS fl ON (fl.file_id = f.id) WHERE fl.library_file_id = ? diff --git a/common/src/app/common/files/defaults.cljc b/common/src/app/common/files/defaults.cljc index 6ef70b5ea..4c2dd1d96 100644 --- a/common/src/app/common/files/defaults.cljc +++ b/common/src/app/common/files/defaults.cljc @@ -6,4 +6,4 @@ (ns app.common.files.defaults) -(def version 51) +(def version 52) diff --git a/common/src/app/common/files/migrations.cljc b/common/src/app/common/files/migrations.cljc index 111d05072..218103f32 100644 --- a/common/src/app/common/files/migrations.cljc +++ b/common/src/app/common/files/migrations.cljc @@ -1010,13 +1010,25 @@ (defn migrate-up-51 "This migration fixes library invalid colors" - [data] (let [update-colors (fn [colors] (into {} (filter #(-> % val valid-color?) colors)))] (update data :colors update-colors))) +(defn migrate-up-52 + "Fixes incorrect value on `layout-wrap-type` prop" + [data] + (letfn [(update-shape [shape] + (if (= :no-wrap (:layout-wrap-type shape)) + (assoc shape :layout-wrap-type :nowrap) + shape)) + + (update-page [page] + (d/update-when page :objects update-vals update-shape))] + + (update data :pages-index update-vals update-page))) + (def migrations "A vector of all applicable migrations" [{:id 2 :migrate-up migrate-up-2} @@ -1059,4 +1071,5 @@ {:id 48 :migrate-up migrate-up-48} {:id 49 :migrate-up migrate-up-49} {:id 50 :migrate-up migrate-up-50} - {:id 51 :migrate-up migrate-up-51}]) + {:id 51 :migrate-up migrate-up-51} + {:id 52 :migrate-up migrate-up-52}])