Modified version of Chris Granger's korma library containing some important enhancements
Simply add Korma as a dependency to your lein/cake project:
[korma-enhanced "0.3.0"]
For most of the docs and real usage, check out original korma documentation http://sqlkorma.com
Enhanced korma differs in some aspects, here i will list all of them
- By default, only fields listed in entity definition are fetched in select queries
- There are 4 kinds of relations, has-one, has-many, has-many-to-many and belongs-to-many-to-many
- Unlike original korma, has-one relation doesn't return superset of both entity fields, but works with subquery as has-many
- All relations are supported also in add, update and delete queries
Here we will create one user and assign him roles with ids 1 and 2, then we will update the same user and assign him roles 1,2 and 3 and last, we will delete the user also with all relations (in this case entries in many-to-many table).
(declare roles)
(korma/defentity users
(korma/entity-fields :firstname :lastname :username :password)
(korma/has-many-to-many roles))
(korma/defentity roles
(korma/entity-fields :rolename)
(korma/belongs-to-many-to-many users))
(korma/insert users
(korma/values {:firstname "Jan" :lastname "Herich" :username "herichj" :id 1})
(korma/relations {:roles [1 2]}))
(korma/update users
(korma/where {:id 1})
(korma/relations {:roles [1 2 3]}))
(korma/delete users
(korma/where {:id 1})
(korma/add-deletion-of-relations))
Copyright (C) 2012 Jan Herich
Distributed under the Eclipse Public License, the same as Clojure.