Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [
- ;; accounts
- { :db/id #db/id[:db.part/db]
- :db/ident :account/name
- :db/valueType :db.type/string
- :db/cardinality :db.cardinality/one
- :db/fulltext true
- :db/unique :db.unique/value
- :db/doc "An account's name"
- :db.install/_attribute :db.part/db}
- { :db/id #db/id[:db.part/db]
- :db/ident :account/balance
- :db/cardinality :db.cardinality/one
- :db/valueType :db.type/bigdec
- :db/doc "The accounts balance"
- :db.install/_attribute :db.part/db}
- { :db/id #db/id[:db.part/db]
- :db/ident :account/min-balance
- :db/cardinality :db.cardinality/one
- :db/valueType :db.type/bigdec
- :db/doc "The accounts maximum balance"
- :db.install/_attribute :db.part/db}
- { :db/id #db/id[:db.part/db]
- :db/ident :ot/amount
- :db/valueType :db.type/bigdec
- :db/cardinality :db.cardinality/one
- :db/doc "Amount transacted"
- :db.install/_attribute :db.part/db}
- { :db/id #db/id[:db.part/db]
- :db/ident :ot/from
- :db/valueType :db.type/ref
- :db/cardinality :db.cardinality/one
- :db/doc "Transferee"
- :db.install/_attribute :db.part/db}
- { :db/id #db/id[:db.part/db]
- :db/ident :ot/to
- :db/valueType :db.type/ref
- :db/cardinality :db.cardinality/one
- :db/doc "Recipient"
- :db.install/_attribute :db.part/db}
- { :db/id #db/id [:db.part/user]
- :db/ident :credit
- :db/fn #db/fn { :lang "clojure"
- :params [db id amount]
- :code "(let [ e (datomic.api/entity db id)
- min-balance (:account/min-balance e 0)
- balance (+ (:account/balance e 0) amount) ]
- (if (>= balance min-balance)
- [[:db/add id :account/balance balance ]]
- (throw (Exception. \"Insufficient funds\"))))" }}
- { :db/id #db/id [:db.part/user]
- :db/ident :transfer
- :db/fn #db/fn { :lang "clojure"
- :params [db from to amount]
- :code "[[:credit from (- amount)]
- [:credit to amount]]"}}
- ]
Add Comment
Please, Sign In to add comment