2013-09-28 10:40:54 +02:00
|
|
|
(ns ldview.models.schema
|
|
|
|
(:require [clojure.java.jdbc :as sql]
|
|
|
|
[noir.io :as io]))
|
|
|
|
|
2014-04-26 00:03:50 +02:00
|
|
|
(def db-store (str "resources/site.db"))
|
2013-09-28 10:40:54 +02:00
|
|
|
|
2013-09-30 00:37:38 +02:00
|
|
|
(def db-spec {:classname "org.sqlite.JDBC"
|
|
|
|
:subprotocol "sqlite"
|
2014-04-26 00:03:50 +02:00
|
|
|
:subname db-store})
|
2013-09-28 23:41:28 +02:00
|
|
|
|
|
|
|
(defn initialized? []
|
2014-04-26 00:03:50 +02:00
|
|
|
(.exists (new java.io.File db-store)))
|
2013-09-28 10:40:54 +02:00
|
|
|
|
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
|
2013-09-30 00:37:38 +02:00
|
|
|
[:id "INTEGER PRIMARY KEY AUTOINCREMENT"]
|
|
|
|
[:ld_uid "INTEGER"]
|
2013-09-28 23:41:28 +02:00
|
|
|
[:title "VARCHAR(255)"]
|
|
|
|
[:description "TEXT"]
|
2014-01-03 18:00:14 +01:00
|
|
|
[:type "VARCHAR(255)"]
|
2013-09-30 00:37:38 +02:00
|
|
|
[:user_id "INTEGER"]
|
|
|
|
[:competition_id "INTEGER"])
|
2013-09-28 23:41:28 +02:00
|
|
|
|
|
|
|
(sql/create-table :users
|
2013-09-30 00:37:38 +02:00
|
|
|
[:id "INTEGER PRIMARY KEY AUTOINCREMENT"]
|
2013-09-28 23:41:28 +02:00
|
|
|
[:name "VARCHAR(255)"])
|
|
|
|
|
2013-09-29 01:08:25 +02:00
|
|
|
(sql/create-table :competitions
|
2013-09-30 00:37:38 +02:00
|
|
|
[:id "INTEGER PRIMARY KEY AUTOINCREMENT"]
|
|
|
|
[:number "INTEGER"]
|
|
|
|
[:motto "VARCHAR(255)"])
|
2013-09-28 23:41:28 +02:00
|
|
|
|
|
|
|
(sql/create-table :sources
|
2013-09-30 00:37:38 +02:00
|
|
|
[:id "INTEGER PRIMARY KEY AUTOINCREMENT"]
|
|
|
|
[:entry_id "INTEGER"]
|
2013-09-28 23:41:28 +02:00
|
|
|
[: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 []
|
2013-09-30 00:37:38 +02:00
|
|
|
(if-not (initialized?)
|
|
|
|
(create-initial-tables)))
|