All the mutation operations are available under the honeyeql.mutation
namespace
(require '[honeyeql.mutation :as hm])
For the given employee
schema,
we can perform the following database operations using the HoneyEQL's mutation support as described.
;; inserting first employee
(hm/insert! db-adapter
#:employee{:first-name "Brown"
:last-name "Tara"})
;; the above expression returns (for postgres)
#:employee{:id 1, :first-name "Brown", :last-name "Tara", :employee-reports-to-id nil}
;; inserting second employee
(hm/insert! db-adapter
#:employee{:first-name "Lauryn"
:last-name "Mario"
:employee-reports-to-id 1})
;; it returns (for postgres)
#:employee{:id 2, :first-name "Lauryn", :last-name "Mario", :employee-reports-to-id 1}
(hm/insert-multi! db-adapter
[#:employee{:first-name "Harmon"
:last-name "Bernie"
:employee-reports-to-id 1}
#:employee{:first-name "Harold"
:last-name "Ambrose"
:employee-reports-to-id 2}
#:employee{:first-name "Bryce"
:last-name "Hoeger"
:employee-reports-to-id 2}])
;; it returns (for postgres)
(#:employee{:id 3, :first-name "Harmon", :last-name "Bernie", :employee-reports-to-id 1}
#:employee{:id 4, :first-name "Harold", :last-name "Ambrose", :employee-reports-to-id 2}
#:employee{:id 5, :first-name "Bryce", :last-name "Hoeger", :employee-reports-to-id 2})
;; (update! db-adapter <data-to-update> <where-condition>)
(hm/update! db-adapter
#:employee{:first-name "Margaret"}
#:employee{:id 1})
;; returns
#:next.jdbc{:update-count 1}
;; where-condition can have multiple attributes and it supports only the AND condition
; UPDATE employee SET last_name = 'Adam' WHERE id = 1 AND first_name
(hm/update! db-adapter
#:employee{:last-name "Adam"}
#:employee{:last-name "Tara" :first-name "Margaret"})
;; returns
#:next.jdbc{:update-count 1}
;; (delete! db-adapter <where-condition>)
(hm/delete! db-adapter
#:employee {:id 9})
;; like the where-condition in the update! function, it can have multiple attributes and it also supports only the AND condition
To perform Database transactipn we can make use of the next.jdbc
's with-transaction
macro along with two functions, db-spec
and use-tx
from the honeyeql.core
namespace.
(jdbc/with-transaction [tx (heql/db-spec db-adapter)]
(let [tx-aware-db-adapter (heql/use-tx db-adapter tx)]
(hm/delete! tx-aware-db-adapter {:employee/id 10})
(hm/delete! tx-aware-db-adapter {:employee/id 11})
(hm/delete! tx-aware-db-adapter {:employee/id 12})))
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close