mfenniak/rethinkdb-net — pull request #183 by mfenniak (2014-10-24 15:01:23+00:00)
Title: Replaceable expression tree -> term conversion w/ IExpressionConverterFactory

Intended to address issue #159, this PR extracts how rethinkdb-net converts expression trees into ReQL terms into a series of externally-implementable interfaces.

New interfaces:
* IExpressionConverterFactory
* IExpressionConverterZeroParameter
* IExpressionConverterOneParameter
* IExpressionConverterTwoParameter

A DefaultExpressionConverterFactory is an implementation of IExpressionConverterFactory that mirrors the existing behaviour. It will also have some extensibility of it's own, so that someone desiring to extend the capabilities of the expression tree conversion doesn't necessarily have to define an entire IExpressionConverterFactory (although that dramatic capability will be available to them).

TODO:
* Many of the method call conversions in BaseExpression haven't been reimplemented as plugged-in functionality yet. This results in a lot of test failing:
* Expressions.DateTimeExpressionTests.DateTimeAddDays
* Expressions.DateTimeExpressionTests.DateTimeAddHours
* Expressions.DateTimeExpressionTests.DateTimeAddMilliseconds
* Expressions.DateTimeExpressionTests.DateTimeAddMinutes
* Expressions.DateTimeExpressionTests.DateTimeAddSeconds
* Expressions.DateTimeExpressionTests.DateTimeAddTicks
* Expressions.DateTimeExpressionTests.DateTimeAddTimeSpan
* Expressions.DateTimeExpressionTests.DateTimeOffsetAddDays
* Expressions.DateTimeExpressionTests.DateTimeOffsetAddHours
* Expressions.DateTimeExpressionTests.DateTimeOffsetAddMilliseconds
* Expressions.DateTimeExpressionTests.DateTimeOffsetAddMinutes
* Expressions.DateTimeExpressionTests.DateTimeOffsetAddSeconds
* Expressions.DateTimeExpressionTests.DateTimeOffsetAddTicks
* Expressions.DateTimeExpressionTests.DateTimeOffsetAddTimeSpan
* Integration.Documentation.TenMinuteGuide.QuerySequence
* Integration.MultiObjectTests.DateTimeAddDays
* Integration.MultiObjectTests.DateTimeAddHours
* Integration.MultiObjectTests.DateTimeAddMilliseconds
* Integration.MultiObjectTests.DateTimeAddMinutes
* Integration.MultiObjectTests.DateTimeAddSeconds
* DefaultExpressionConverterFactory provided pretty limited extensibility so far; some additional decomposition of it and BaseExpression are probably warranted.
* Release note updates.