47 lines
1.5 KiB
Clojure
47 lines
1.5 KiB
Clojure
(ns ldview.models.schema
|
|
(:require [clojure.java.jdbc :as sql]
|
|
[noir.io :as io]))
|
|
|
|
(def db-store (str "resources/site.db"))
|
|
|
|
(def db-spec {:classname "org.sqlite.JDBC"
|
|
:subprotocol "sqlite"
|
|
:subname db-store})
|
|
|
|
(defn initialized? []
|
|
(.exists (new java.io.File db-store)))
|
|
|
|
|
|
(defn create-initial-tables []
|
|
(sql/with-connection db-spec
|
|
(sql/create-table :entries
|
|
[:id "INTEGER PRIMARY KEY AUTOINCREMENT"]
|
|
[:ld_uid "INTEGER"]
|
|
[:title "VARCHAR(255)"]
|
|
[:description "TEXT"]
|
|
[:type "VARCHAR(255)"]
|
|
[:user_id "INTEGER"]
|
|
[:competition_id "INTEGER"])
|
|
|
|
(sql/create-table :users
|
|
[:id "INTEGER PRIMARY KEY AUTOINCREMENT"]
|
|
[:name "VARCHAR(255)"])
|
|
|
|
(sql/create-table :competitions
|
|
[:id "INTEGER PRIMARY KEY AUTOINCREMENT"]
|
|
[:number "INTEGER"]
|
|
[:motto "VARCHAR(255)"])
|
|
|
|
(sql/create-table :sources
|
|
[:id "INTEGER PRIMARY KEY AUTOINCREMENT"]
|
|
[:entry_id "INTEGER"]
|
|
[: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 []
|
|
(if-not (initialized?)
|
|
(create-initial-tables)))
|