Guest User

Untitled

a guest
Dec 12th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. [
  2. ;; accounts
  3.  
  4. { :db/id #db/id[:db.part/db]
  5. :db/ident :account/name
  6. :db/valueType :db.type/string
  7. :db/cardinality :db.cardinality/one
  8. :db/fulltext true
  9. :db/unique :db.unique/value
  10. :db/doc "An account's name"
  11. :db.install/_attribute :db.part/db}
  12.  
  13. { :db/id #db/id[:db.part/db]
  14. :db/ident :account/balance
  15. :db/cardinality :db.cardinality/one
  16. :db/valueType :db.type/bigdec
  17. :db/doc "The accounts balance"
  18. :db.install/_attribute :db.part/db}
  19.  
  20. { :db/id #db/id[:db.part/db]
  21. :db/ident :account/min-balance
  22. :db/cardinality :db.cardinality/one
  23. :db/valueType :db.type/bigdec
  24. :db/doc "The accounts maximum balance"
  25. :db.install/_attribute :db.part/db}
  26.  
  27. { :db/id #db/id[:db.part/db]
  28. :db/ident :ot/amount
  29. :db/valueType :db.type/bigdec
  30. :db/cardinality :db.cardinality/one
  31. :db/doc "Amount transacted"
  32. :db.install/_attribute :db.part/db}
  33.  
  34. { :db/id #db/id[:db.part/db]
  35. :db/ident :ot/from
  36. :db/valueType :db.type/ref
  37. :db/cardinality :db.cardinality/one
  38. :db/doc "Transferee"
  39. :db.install/_attribute :db.part/db}
  40.  
  41. { :db/id #db/id[:db.part/db]
  42. :db/ident :ot/to
  43. :db/valueType :db.type/ref
  44. :db/cardinality :db.cardinality/one
  45. :db/doc "Recipient"
  46. :db.install/_attribute :db.part/db}
  47.  
  48. { :db/id #db/id [:db.part/user]
  49. :db/ident :credit
  50. :db/fn #db/fn { :lang "clojure"
  51. :params [db id amount]
  52. :code "(let [ e (datomic.api/entity db id)
  53. min-balance (:account/min-balance e 0)
  54. balance (+ (:account/balance e 0) amount) ]
  55. (if (>= balance min-balance)
  56. [[:db/add id :account/balance balance ]]
  57. (throw (Exception. \"Insufficient funds\"))))" }}
  58.  
  59. { :db/id #db/id [:db.part/user]
  60. :db/ident :transfer
  61. :db/fn #db/fn { :lang "clojure"
  62. :params [db from to amount]
  63. :code "[[:credit from (- amount)]
  64. [:credit to amount]]"}}
  65.  
  66. ]
Add Comment
Please, Sign In to add comment