diff --git a/backend/src/app/binfile/v3.clj b/backend/src/app/binfile/v3.clj index f945b3d81..c2b46b415 100644 --- a/backend/src/app/binfile/v3.clj +++ b/backend/src/app/binfile/v3.clj @@ -15,6 +15,7 @@ [app.common.data.macros :as dm] [app.common.exceptions :as ex] [app.common.features :as cfeat] + [app.common.files.migrations :as-alias fmg] [app.common.json :as json] [app.common.logging :as l] [app.common.schema :as sm] @@ -755,7 +756,14 @@ (assoc :name file-name) (assoc :project-id project-id) (dissoc :options) - (bfc/process-file))] + (bfc/process-file) + + ;; NOTE: this is necessary because when we just + ;; creating a new file from imported artifact, + ;; there are no migrations registered on the + ;; database, so we need to persist all of them, not + ;; only the applied + (vary-meta dissoc ::fmg/migrated))] (bfm/register-pending-migrations! cfg file) (bfc/save-file! cfg file ::db/return-keys false) diff --git a/backend/src/app/rpc/commands/files.clj b/backend/src/app/rpc/commands/files.clj index f26897258..cbca9b3f5 100644 --- a/backend/src/app/rpc/commands/files.clj +++ b/backend/src/app/rpc/commands/files.clj @@ -238,7 +238,6 @@ (db/update! conn :file {:data (blob/encode (:data file)) :version (:version file) - :modified-at (dt/now) :features (db/create-array conn "text" (:features file))} {:id id}) @@ -293,7 +292,7 @@ (defn get-file-etag [{:keys [::rpc/profile-id]} {:keys [modified-at revn vern permissions]}] - (str profile-id "/" revn "/" vern "/" + (str profile-id "/" revn "/" vern "/" (hash fmg/available-migrations) "/" (dt/format-instant modified-at :iso) "/" (uri/map->query-string permissions))) diff --git a/common/src/app/common/files/migrations.cljc b/common/src/app/common/files/migrations.cljc index 7d440882a..2eb09961a 100644 --- a/common/src/app/common/files/migrations.cljc +++ b/common/src/app/common/files/migrations.cljc @@ -36,9 +36,7 @@ #?(:cljs (l/set-level! :info)) -(declare ^:private available-migrations) -(declare ^:private migration-up-index) -(declare ^:private migration-down-index) +(declare available-migrations) (def version cfd/version) @@ -50,7 +48,10 @@ [file] (or (nil? (:version file)) (not= cfd/version (:version file)) - (not= available-migrations (:migrations file)))) + (boolean + (->> (:migrations file #{}) + (set/difference available-migrations) + (not-empty))))) (def xf:map-name (map :name))