Releases: typelevel/grackle
v0.10.0
What's Changed
- add some convenience syntax by @tpolecat in #312
- Fixed cursor construction for RootEffects by @milessabin in #313
- Bumped JDK, Scala, SBT and dependency versions by @milessabin in #314
- Support nested CirceFields in SqlMappings by @milessabin in #315
Full Changelog: v0.9.1...v0.10.0
v0.9.1
v0.9.0
What's Changed
- Added support for composite keys by @milessabin in #308
- Don't combine multiple top-level queries by @milessabin in #307
Full Changelog: v0.8.2...v0.9.0
v0.8.2
v0.8.1
What's Changed
- Don't drop key columns for embedded subobjects by @milessabin in #289
Full Changelog: v0.8.0...v0.8.1
v0.8.0
What's Changed
- Reworked roots and added support for result transforms by @milessabin in #282
Full Changelog: v0.7.0...v0.8.0
v0.7.0
This release collapses the distinction between UniquePath
and ListPath
by requiring paths to specify their originating types. One can construct a path thus:
Path.from(tpe) // an empty path rooted at tpe
And can extend a path via /
:
path / "a" / "b" / "c" // path extended by three more elements
As a convenience one can construct and extend a path via the new /
method on Type
:
tpe / "a" / "b" // an empty path rooted a t, extended with "a" and then "b"
In order to turn a path into a term one can call .asTerm[A]
for any type A
. This conversion is also applied implicitly, so a Path
can be used in a context where a Term
is expected. For example:
Eql(tpe / "foo" / "bar", Const(42)) // implictly convert a Path to a Term[Int]
The root type and underlying schema will determine whether the resulting Term
has list or unique semantics. This makes no difference for predicates that are eliminated by the database back-end, but the distinction remains important for in-memory mappings.
v0.6.0
What's Changed
- Add preunique operation to Cursor to support nested Unique by @milessabin in #254
Full Changelog: v0.5.2...v0.6.0