beherbergung/backend/src/beherbergung/webserver/state.clj
Johannes Lötzsch 7e8daca015 backend: template (from swlkup)
TODO:
* debug why http://localhost:4000/graphiql/index.html doesn't load
* adapt tests from swlkup
* adapt flake from swlkup and test build pipeline
2022-03-06 23:09:59 +01:00

26 lines
1.1 KiB
Clojure

(ns beherbergung.webserver.state
(:gen-class) ;; this Class contains our -main function
(:require [ring.adapter.jetty]
[ring.middleware.reload]
[beherbergung.webserver.handler]
[mount.core :as mount :refer [defstate]]
[beherbergung.config.state]
[signal.handler :refer [with-handler]]))
(defstate ^{:on-reload :noop} ;; When the app is recompiled, mount should not care, but we use ring.middleware.reload/wrap-reload
webserver
:start (do (println (str "Start server at http://localhost:" (:port beherbergung.config.state/env)))
(ring.adapter.jetty/run-jetty (ring.middleware.reload/wrap-reload #'beherbergung.webserver.handler/app)
{:port (:port beherbergung.config.state/env) :join? false}))
:stop (.stop webserver))
(defn -main [& _args]
(mount/start)
(let [finaly (fn [] (mount/stop) ;; Export the database
(System/exit 0))]
(with-handler :term (finaly)) ;; kill
(with-handler :int (finaly))) ;; Ctrl+C
(mount.core/running-states)) ;; Return value for debugging when called on repl