0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-23 15:26:29 -05:00

Integrate feature handling on file data migration

Make it less error prone
This commit is contained in:
Andrey Antukh 2023-12-15 14:52:46 +01:00
parent f01cad9ce7
commit eabed4325a

View file

@ -42,18 +42,21 @@
(reduce migrate-fn data (range (:version data 0) to-version))))))
(defn migrate-file
[{:keys [id data] :as file}]
(let [data (assoc data :id id)]
(-> file
(assoc ::orig-version (:version data))
(assoc :data (migrate-data data)))))
[{:keys [id data features] :as file}]
(binding [cfeat/*new* (atom #{})]
(let [file (-> file
(update :data assoc :id id)
(update :data migrate-data)
(update :features (fnil into #{}) (deref cfeat/*new*))
(update :features cfeat/migrate-legacy-features))]
(if (or (not= (:version data) (:version (:data file)))
(not= features (:features file)))
(vary-meta file assoc ::migrated true)
file))))
(defn migrated?
[{:keys [data] :as file}]
(or (::migrated file)
(let [version (:version data)]
(> version
(::orig-version file version)))))
[file]
(true? (-> file meta ::migrated)))
;; Default handler, noop
(defmethod migrate :default [data] data)