ldview/src/ldview/models/schema.clj

48 lines
1.5 KiB
Clojure
Raw Normal View History

2013-09-28 10:40:54 +02:00
(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? []
2013-09-28 10:40:54 +02:00
(.exists (new java.io.File (str (io/resource-path) db-store ".h2.db"))))
(defn create-initial-tables []
2013-09-28 10:40:54 +02:00
(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))