mount/test/app/app.clj

66 lines
2.3 KiB
Clojure
Raw Normal View History

2015-10-20 12:53:09 +00:00
(ns app
2015-10-20 01:33:56 +00:00
(:require [datomic.api :as d]
[clojure.tools.nrepl.server :refer [start-server stop-server]]
2015-11-17 05:09:45 +00:00
[mount.core :as mount :refer [defstate]]
2015-10-20 12:53:09 +00:00
[app.utils.datomic :refer [touch]]
[app.config :refer [app-config]]
[app.nyse :as nyse]))
2015-10-20 01:33:56 +00:00
;; example on creating a network REPL
(defn- start-nrepl [{:keys [host port]}]
(start-server :bind host :port port))
;; nREPL is just another simple state
(defstate nrepl :start (start-nrepl (:nrepl app-config))
:stop (stop-server nrepl))
;; datomic schema
2015-10-20 01:33:56 +00:00
(defn create-schema [conn]
(let [schema [{:db/id #db/id [:db.part/db]
:db/ident :order/symbol
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db/index true
:db.install/_attribute :db.part/db}
{:db/id #db/id [:db.part/db]
:db/ident :order/bid
:db/valueType :db.type/bigdec
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}
{:db/id #db/id [:db.part/db]
:db/ident :order/qty
:db/valueType :db.type/long
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}
{:db/id #db/id [:db.part/db]
:db/ident :order/offer
:db/valueType :db.type/bigdec
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}]]
@(d/transact conn schema)))
(defn add-order [ticker bid offer qty] ;; can take connection as param
@(d/transact nyse/conn [{:db/id (d/tempid :db.part/user)
:order/symbol ticker
:order/bid bid
:order/offer offer
:order/qty qty}]))
2015-10-20 12:36:00 +00:00
(defn find-orders [ticker] ;; can take connection as param
2015-10-20 01:33:56 +00:00
(let [orders (d/q '[:find ?e :in $ ?ticker
:where [?e :order/symbol ?ticker]]
(d/db nyse/conn) ticker)]
(touch nyse/conn orders)))
(defn create-nyse-schema []
(create-schema nyse/conn))
2015-10-26 02:21:36 +00:00
;; example of an app entry point
(defn -main [& args]
(mount/start))