v0.9.0.0
Features
-
The type-safe object model for secondary indexes has been expanded to incldude multi-indexes. Calling table.IndexDefineMulti will return an IMultiIndex<TRecord, TIndexType> interface that can be used in multi-index operations, such as GetAll, Between, and EqJoin. PR #174
-
It's now possible to customize and configure how rethinkdb-net converts expression trees to RethinkDB terms by creating a DefaultExpressionConverterFactory and calling Register...() methods on it to configure how operators, method calls, and member accesses are converted into RethinkDB terms. The customized expression converter factory can then be used by setting the QueryConverter property of a Connection. PR #183
-
Hard-coded types in query operators are optionally provided by rethinkdb-net, but can be input instead. For example, we provide Query.Now() that returns a DateTimeOffset; if you'd prefer DateTime or some other type, you can use Query.Now(). As long as the datum converter on your connection can convert the results from the server into YourType, the query will work as you'd expect. PR #183
-
TimeSpan constructors are now supported in expressions (new TimeSpan(...), and TimeSpan.From[Days/Hours/Minutes/Seconds/Milliseconds/Ticks]) allowing for queries like the below. Issue #153
table.Filter(r => r.CreatedAt + TimeSpan.FromDays(r.ExpireInDays) < Query.Now())
-
Server-side GUID generation is now supported; eg.
table.Update(record => new Record() { Id = Guid.NewGuid() })
will actually generate unique guids for all updated records in table, rather than evaluating client-side to a single value. Issue #182 -
Accessors to common properties on DateTime and DateTimeOffset can now be performed server-side. For example, the query
table.Filter(record => record.CreatedAt.Year == 2014)
is now possible. Issue #120 -
DateTime.UtcNow and DateTimeOffset.UtcNow are executed server-side when accessed inside an expression tree. Issue #120
Compatibility
- Added support for RethinkDB's JSON-based client driver protocol. The JSON protocol is now the default protocol, but the protocol to be used is configurable on the connection objects. PR #176
Breaking Changes
- Updated Insert command to reflect RethinkDB's deprecation of upsert and addition of the new conflict parameter. PR #177
- IDatumConverterFactory has been replaced with IQueryConverter in APIs where the requirement is a tool to convert client-side queries into RethinkDB terms. IQueryConverter is a composed interface containing IDatumConverterFactory and IExpressionConverterFactory. PR #183