From 58906c635ad0ea2028f99997cb673ef40a2ea2bb Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 12 May 2025 22:10:39 +0200 Subject: Add sqlite database --- src/chef/database.clj | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/chef/database.clj (limited to 'src/chef/database.clj') diff --git a/src/chef/database.clj b/src/chef/database.clj new file mode 100644 index 0000000..ec5d89d --- /dev/null +++ b/src/chef/database.clj @@ -0,0 +1,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)))))) -- cgit v1.2.3