Skip to content

Commit 4f3b4e3

Browse files
committed
#16: enable liquibase migrations, add database configuration.
1 parent 922c5ee commit 4f3b4e3

9 files changed

Lines changed: 47 additions & 23 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ Use `lein run client` to run the standalone game client.
1111

1212
## Game server
1313

14+
### Configuring
15+
All configuration data is stored in the `config.edn` file.
16+
1417
### Running
1518
Use `lein ring server` to run game server.
1619

config.edn

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{:database {:url "jdbc:h2:hyperspace-server;DB_CLOSE_DELAY=-1"
2+
:user "sa"
3+
:password ""}}

project.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(defproject hyperspace "1.0.0-SNAPSHOT"
22
:description "Simple 2D game written in Clojure."
3-
:dependencies [[com.googlecode.flyway/flyway-core "2.3"]
3+
:dependencies [[clj-liquibase "0.5.2"]
44
[com.h2database/h2 "1.3.173"]
55
[log4j/log4j "1.2.17"]
66
[metosin/ring-swagger "0.13.0"]

src/hyperspace/server/config.clj

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
(ns hyperspace.server.config
2+
(:import (java.io PushbackReader))
3+
(:require [clojure.java.io :as io]))
4+
5+
(defn -from-edn
6+
[fname]
7+
(with-open [rdr (-> (io/reader fname)
8+
PushbackReader.)]
9+
(clojure.edn/read rdr)))
10+
11+
(def config (-from-edn "config.edn"))

src/hyperspace/server/database.clj

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
(ns hyperspace.server.database.datasource
2+
(:require [clj-liquibase.cli :as cli]
3+
[hyperspace.server.database.migrations :as migrations])
4+
(:use [hyperspace.server.config :only [config]])
5+
(:import [org.h2.jdbcx JdbcConnectionPool]))
6+
7+
(def datasource
8+
(let [{url :url
9+
user :user
10+
password :password} (:database config)
11+
ds (JdbcConnectionPool/create url user password)]
12+
(cli/update {:datasource ds
13+
:changelog migrations/changelog})
14+
ds))
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
(ns hyperspace.server.database.migrations
2+
(:require [clj-liquibase.change :as ch])
3+
(:use [clj-liquibase.core :only (defchangelog)]))
4+
5+
(def add-users-table
6+
(ch/create-table :users
7+
[[:id :int :null false :pk true :autoinc true]
8+
[:name [:varchar 40] :null false]
9+
[:password [:varchar 40] :null false]]))
10+
11+
(def changeset-1 ["id=1" "author=ForNeVeR" [add-users-table]])
12+
13+
(defchangelog changelog "hyperspace-server" [changeset-1])

src/hyperspace/server/main.clj

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/hyperspace/swagger/server.clj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
(ns hyperspace.swagger.server
22
(:require [compojure.api.sweet :refer :all]
33
[ring.util.http-response :refer :all]
4-
[schema.core :as s]))
4+
[schema.core :as s])
5+
(:use [hyperspace.server.database.datasource :only [datasource]]))
56

67
(s/defschema Total {:total Long})
78

0 commit comments

Comments
 (0)