From 9649878fd80fecd2267083e7b09854ced7902fc5 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 13 Feb 2024 19:56:12 +0100 Subject: [PATCH] :sparkles: Ensure id prop on :data on components-v2 migration --- backend/src/app/features/components_v2.clj | 47 +++++++++++++--------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/backend/src/app/features/components_v2.clj b/backend/src/app/features/components_v2.clj index 72f416bdf..667e1bb60 100644 --- a/backend/src/app/features/components_v2.clj +++ b/backend/src/app/features/components_v2.clj @@ -1519,21 +1519,9 @@ (cfv/validate-file! file libs) (cfv/validate-file-schema! file)) -(defn- process-file - [{:keys [::db/conn] :as system} {:keys [id] :as file} & {:keys [validate?]}] - (let [libs (->> (files/get-file-libraries conn id) - (into [file] (comp (map :id) - (map (partial get-file system)))) - (d/index-by :id)) - - file (-> file - (update :data migrate-fdata libs) - (update :features conj "components/v2")) - - _ (when validate? - (validate-file! file libs)) - - file (if (contains? (:features file) "fdata/objects-map") +(defn- persist-file! + [{:keys [::db/conn] :as system} {:keys [id] :as file}] + (let [file (if (contains? (:features file) "fdata/objects-map") (fdata/enable-objects-map file) file) @@ -1542,15 +1530,32 @@ (let [file (fdata/enable-pointer-map file)] (fdata/persist-pointers! system id) file)) - file)] + file) + + ;; Ensure all files has :data with id + file (update file :data assoc :id id)] (db/update! conn :file {:data (blob/encode (:data file)) :features (db/create-array conn "text" (:features file)) :revn (:revn file)} - {:id (:id file)}) + {:id (:id file)}))) - (dissoc file :data))) +(defn- process-file! + [{:keys [::db/conn] :as system} {:keys [id] :as file} & {:keys [validate?]}] + (let [libs (->> (files/get-file-libraries conn id) + (into [file] (comp (map :id) + (map (partial get-file system)))) + (d/index-by :id)) + + file (-> file + (update :data migrate-fdata libs) + (update :features conj "components/v2"))] + + (when validate? + (validate-file! file libs)) + + file)) (def ^:private sql:get-and-lock-team-files "SELECT f.id @@ -1600,13 +1605,15 @@ (when (string? label) (fsnap/take-file-snapshot! system {:file-id file-id :label (str "migration/" label)})) - (let [file (get-file system file-id)] + (let [file (get-file system file-id) + file (process-file! system file :validate? validate?)] + (events/tap :progress {:op :migrate-file :name (:name file) :id (:id file)}) - (process-file system file :validate? validate?))))) + (persist-file! system file))))) (catch Throwable cause (vreset! err true)