TechSmith/hyde — pull request #43 by jkling (2013-02-13 15:23:57+00:00)
Title: Add support for more interesting queries to table storage

Currently, to get a subset of results from a collection, we have to get the entire collection and grab the subset we're interested in from the full result set.

This series of commits introduces an IQuery interface that implements IEnumerable. The AzureQuery concrete class maintains a TableQuery object and the .Take operation will return a new AzureQuery with an updated TableQuery. Only when the object is finally enumerated do we hit table storage using the stored TableQuery.

Also included is a commit that establishes a MinimumKeyValue ( single space character ) and a MaximumKeyValue ( a max length key comprised of all \uFFFF characters ) to allow unbounded range queries.

Fun fact: The test for the new MinimumKeyValue variable will fail on local storage, but succeed against live table storage. There's a comment on the test to indicate this as well.

Changes clients might care about ( non-breaking to the best of my knowledge ):
- Hits to table storage are done lazily ( when object is enumerated )
- Clients will need to use the more specific interface IQuery instead of IEnumerable to take advantage of the improved functionality ( any clients using 'var' should get it for free )
- Will need to recompile to take advantage of new functionality