Improve internal state validation on db module

This commit is contained in:
Andrey Antukh
2023-02-02 13:13:55 +01:00
parent 071ecca875
commit 1325e46192
5 changed files with 78 additions and 80 deletions

View File

@@ -6,8 +6,12 @@
(ns app.migrations
(:require
[app.common.data.macros :as dm]
[app.common.logging :as l]
[app.db :as db]
[app.migrations.clj.migration-0023 :as mg0023]
[app.util.migrations :as mg]
[clojure.spec.alpha :as s]
[integrant.core :as ig]))
(def migrations
@@ -313,5 +317,19 @@
])
(defn- apply-migrations!
[pool migrations]
;; (app.common.pprint/pprint migrations)
(dm/with-open [conn (db/open pool)]
(mg/setup! conn)
(mg/migrate! conn {:name "main" :steps migrations})))
(defmethod ig/init-key ::migrations [_ _] migrations)
(defmethod ig/pre-init-spec ::migrations
[_]
(s/keys :req [::db/pool]))
(defmethod ig/init-key ::migrations
[module {:keys [::db/pool]}]
(when-not (db/read-only? pool)
(l/info :hint "running migrations" :module module)
(some->> (seq migrations) (apply-migrations! pool))))