Created
September 12, 2014 12:06
-
-
Save daemianmack/a7e8ac1cbea2ca8b6250 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defrecord Server [service-map] | |
component/Lifecycle | |
(start [component] | |
(info :msg "Starting server.") | |
(let [server (bootstrap/create-server (:service-map service-map))] | |
(bootstrap/start server) | |
(assoc component :server server))) | |
(stop [component] | |
(info :msg "Stopping server.") | |
(update-in component [:server] bootstrap/stop))) | |
(definterceptorfn add-conn | |
[conn] | |
(on-request ::add-conn #(assoc % :conn conn))) | |
(defrecord ServiceMap [service-data conn] | |
component/Lifecycle | |
(start [component] | |
(info :msg "Adding connection interceptor to service-map.") | |
(let [service-map (update-in service-data | |
[::bootstrap/interceptors] | |
conj (add-conn (:conn conn)))] | |
(assoc component :service-map service-map))) | |
(stop [component] | |
(info :msg "Removing connection interceptor from service-map.") | |
(update-in component | |
[:service-map ::bootstrap/interceptors] | |
pop))) | |
(defn mk-service-map | |
[conn & [opts]] | |
(map->ServiceMap {:service-data (merge service/service opts)})) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(def default-interceptors | |
(-> {::bootstrap/routes routes} | |
bootstrap/default-interceptors | |
::bootstrap/interceptors)) | |
(definterceptor session-interceptor (middlewares/session {:store (cookie/cookie-store)})) | |
(def interceptors | |
(conj default-interceptors | |
session-interceptor | |
(body-params/body-params))) | |
(def service {:env :prod | |
::bootstrap/routes routes | |
::bootstrap/join? false | |
::bootstrap/resource-path "/public" | |
::bootstrap/interceptors interceptors | |
::bootstrap/type :jetty | |
::bootstrap/port 8080}) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defn dev-system [config-options] | |
(log/info :msg "Hello world!") | |
(let [{:keys [db-uri schema norms server-opts]} config-options] | |
(map->TheSystem | |
{:config-options config-options | |
:conn (storage/mk-conn db-uri) | |
:service-map (component/using | |
(server/mk-service-map server-opts) | |
{:conn :conn}) | |
:server (component/using | |
(server/mk-server) | |
{:service-map :service-map}))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment