blob: ec5d89d67d764a5bfb1e5d2ad24d396c9cae52d0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
(ns chef.database
(:require [honey.sql :as sql]
[next.jdbc :as jdbc]
[chef.database.init :as cdinit]))
(def db (delay (jdbc/get-datasource {:dbtype "sqlite" :dbname "chef.db"})))
(def ^:private patches {"init" cdinit/exec!})
(defn run-patches! []
(->> (sql/format {:create-table [:applied-patches :if-not-exists]
:with-columns [[:name :text]]})
(jdbc/execute! @db))
(let [applied-patches (->> (sql/format {:select [:*] :from [:applied-patches]})
(jdbc/execute! @db)
(map :applied_patches/name))]
(doseq [[k patch] patches]
(when (neg? (.indexOf applied-patches k))
(println (str "DB: Running " k " patch..."))
(patch @db)
(->> (sql/format {:insert-into :applied-patches
:values [[k]]})
(jdbc/execute! @db))))))
|