(ns ldview.models.schema (:require [clojure.java.jdbc :as sql] [noir.io :as io])) (def db-store "site.db") (def db-spec {:classname "org.h2.Driver" :subprotocol "h2" :subname (str (io/resource-path) db-store) :user "sa" :password "" :naming {:keys clojure.string/lower-case :fields clojure.string/upper-case}}) (defn initialized? [] (.exists (new java.io.File (str (io/resource-path) db-store ".h2.db")))) (defn create-initial-tables [] (sql/with-connection db-spec (sql/create-table :entries [:id "INT PRIMARY KEY AUTO_INCREMENT"] [:ld_uid "INT"] [:title "VARCHAR(255)"] [:description "TEXT"] [:user_id "INT"] [:contest_id "INT"]) (sql/create-table :users [:id "INT PRIMARY KEY AUTO_INCREMENT"] [:name "VARCHAR(255)"]) (sql/create-table :contests [:id "INT PRIMARY KEY AUTO_INCREMENT"] [:name "VARCHAR(255)"]) (sql/create-table :sources [:id "INT PRIMARY KEY AUTO_INCREMENT"] [:entry_id "INT"] [:type "VARCHAR(100)"] [:uri "VARCHAR(255)"]) (sql/do-commands "CREATE INDEX ld_uid_index ON entries (ld_uid)") (sql/do-commands "CREATE INDEX entry_id_index ON sources (entry_id)"))) (defn create-tables [] (create-initial-tables))