refactoring mount sample app
drinking more "pure tea"
This commit is contained in:
parent
d834c6a2b0
commit
e3066fe024
5 changed files with 25 additions and 26 deletions
|
|
@ -20,7 +20,7 @@
|
|||
(defstate conn :start (new-connection config)
|
||||
:stop (disconnect config conn))
|
||||
|
||||
;; datomic schema (staging as an example)
|
||||
;; datomic schema (staging for an example)
|
||||
(defn create-schema [conn]
|
||||
(let [schema [{:db/id #db/id [:db.part/db]
|
||||
:db/ident :order/symbol
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
(:require [clojure.tools.nrepl.server :refer [start-server stop-server]]
|
||||
[mount.core :as mount :refer [defstate]]
|
||||
[app.conf :refer [config]]
|
||||
[app.www :refer [nyse-app]])
|
||||
[app.www])
|
||||
(:gen-class)) ;; for -main / uberjar (no need in dev)
|
||||
|
||||
;; example on creating a network REPL
|
||||
|
|
|
|||
|
|
@ -1,20 +1,16 @@
|
|||
(ns app.nyse
|
||||
(:require [datomic.api :as d]
|
||||
[app.db :refer [create-schema] :as db]
|
||||
[app.utils.datomic :refer [touch]]))
|
||||
|
||||
(defn add-order [ticker bid offer qty] ;; can take connection as param
|
||||
@(d/transact db/conn [{:db/id (d/tempid :db.part/user)
|
||||
:order/symbol ticker
|
||||
:order/bid bid
|
||||
:order/offer offer
|
||||
:order/qty qty}]))
|
||||
(defn add-order [conn {:keys [ticker bid offer qty]}]
|
||||
@(d/transact conn [{:db/id (d/tempid :db.part/user)
|
||||
:order/symbol ticker
|
||||
:order/bid bid
|
||||
:order/offer offer
|
||||
:order/qty qty}]))
|
||||
|
||||
(defn find-orders [ticker] ;; can take connection as param
|
||||
(defn find-orders [conn ticker]
|
||||
(let [orders (d/q '[:find ?e :in $ ?ticker
|
||||
:where [?e :order/symbol ?ticker]]
|
||||
(d/db db/conn) ticker)]
|
||||
(touch db/conn orders)))
|
||||
|
||||
(defn create-nyse-schema []
|
||||
(create-schema db/conn))
|
||||
(d/db conn) ticker)]
|
||||
(touch conn orders)))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
(ns app.www
|
||||
(:require [app.nyse :refer [add-order find-orders create-nyse-schema]]
|
||||
(:require [app.nyse :refer [add-order find-orders]]
|
||||
[app.db :refer [conn create-schema]]
|
||||
[app.conf :refer [config]]
|
||||
[mount.core :refer [defstate]]
|
||||
[cheshire.core :refer [generate-string]]
|
||||
|
|
@ -11,21 +12,22 @@
|
|||
|
||||
(GET "/" [] "welcome to mount sample app!")
|
||||
(GET "/nyse/orders/:ticker" [ticker]
|
||||
(generate-string (find-orders ticker)))
|
||||
(generate-string (find-orders conn ticker)))
|
||||
|
||||
(POST "/nyse/orders" [ticker qty bid offer]
|
||||
(add-order ticker (bigdec bid) (bigdec offer) (Integer/parseInt qty))
|
||||
(generate-string {:added {:ticker ticker
|
||||
:qty qty
|
||||
:bid bid
|
||||
:offer offer}})))
|
||||
(let [order {:ticker ticker
|
||||
:bid (bigdec bid)
|
||||
:offer (bigdec offer)
|
||||
:qty (Integer/parseInt qty)}]
|
||||
(add-order conn order)
|
||||
(generate-string {:added order}))))
|
||||
|
||||
(defn start-nyse [{:keys [www]}]
|
||||
(create-nyse-schema) ;; creating schema (usually done long before the app is started..)
|
||||
(defn start-nyse [conn {:keys [www]}] ;; app entry point
|
||||
(create-schema conn) ;; just an example, usually schema would already be there
|
||||
(-> (routes mount-example-routes)
|
||||
(handler/site)
|
||||
(run-jetty {:join? false
|
||||
:port (:port www)})))
|
||||
|
||||
(defstate nyse-app :start (start-nyse config)
|
||||
(defstate nyse-app :start (start-nyse conn config)
|
||||
:stop (.stop nyse-app)) ;; it's a "org.eclipse.jetty.server.Server" at this point
|
||||
|
|
|
|||
|
|
@ -6,8 +6,9 @@
|
|||
[mount.tools.graph :refer [states-with-deps]]
|
||||
[app.utils.logging :refer [with-logging-status]]
|
||||
[app.www]
|
||||
[app.db :refer [conn]]
|
||||
[app.example]
|
||||
[app.nyse :refer [create-nyse-schema find-orders add-order]])) ;; <<<< replace this your "app" namespace(s) you want to be available at REPL time
|
||||
[app.nyse :refer [find-orders add-order]])) ;; <<<< replace this your "app" namespace(s) you want to be available at REPL time
|
||||
|
||||
(defn start []
|
||||
(with-logging-status)
|
||||
|
|
|
|||
Loading…
Reference in a new issue