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