-
Notifications
You must be signed in to change notification settings - Fork 2
/
systems.clj
47 lines (45 loc) · 1.76 KB
/
systems.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
(ns example.systems
(:require
[system.core :refer [defsystem]]
[com.stuartsierra.component :as component]
[example.db :refer [create-table!]]
(system.components
[h2 :refer [new-h2-database DEFAULT-MEM-SPEC DEFAULT-DB-SPEC]]
[http-kit :refer [new-web-server]]
[endpoint :refer [new-endpoint]]
[middleware :refer [new-middleware]]
[handler :refer [new-handler]])
[example.handler :refer [app-routes]]
[ring.middleware.format :refer [wrap-restful-format]]
[ring.middleware.defaults :refer [wrap-defaults api-defaults]]
[environ.core :refer [env]]))
(defn dev-system []
(component/system-map
:db (new-h2-database DEFAULT-MEM-SPEC #(create-table! {} {:connection %}))
:routes (component/using
(new-endpoint app-routes)
[:db])
:middleware (new-middleware {:middleware [[wrap-restful-format]
[wrap-defaults :defaults]]
:defaults api-defaults})
:handler (component/using
(new-handler)
[:routes :middleware])
:http (component/using
(new-web-server (Integer. (env :http-port)))
[:handler])))
(defn prod-system []
(component/system-map
:db (new-h2-database DEFAULT-DB-SPEC #(create-table! {} {:connection %}))
:routes (component/using
(new-endpoint app-routes)
[:db])
:middleware (new-middleware {:middleware [[wrap-restful-format]
[wrap-defaults :defaults]]
:defaults api-defaults})
:handler (component/using
(new-handler)
[:routes :middleware])
:http (component/using
(new-web-server (Integer. (env :http-port)))
[:handler])))