Skip to content

Commit a57858c

Browse files
author
Jeff Treuting
committed
Fixed strings used for equals, added quotes when needed
1 parent 9b10532 commit a57858c

5 files changed

Lines changed: 35 additions & 26 deletions

File tree

SharpRepository.ODataRepository/Linq/ODataQuery.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public IEnumerable<T> Enumerable<T>()
2525
{
2626
var querystring = String.Empty;
2727
var resultType = typeof (T);
28+
var hasFilter = false;
2829

2930
if (_queryParts.ReturnCount)
3031
{
@@ -52,6 +53,9 @@ public IEnumerable<T> Enumerable<T>()
5253
var fullUrl = _url + "/" + _collectionName + querystring;
5354
var json = UrlHelper.Get(fullUrl);
5455

56+
// Netflix retuns a separate array inside d when a filter is used for some reason, so hard-coded check for now during tests
57+
hasFilter = !querystring.EndsWith("$format=json&");
58+
5559
//var json = ODataRequest.Execute(fullUrl, "POST", _queryParts.BuildODataApiPostData(), "application/json");
5660

5761
JObject res;
@@ -69,6 +73,10 @@ public IEnumerable<T> Enumerable<T>()
6973
// get the rows property and deserialize that
7074
var jobject = JsonConvert.DeserializeObject(json) as JObject;
7175
var rows = jobject["d"];
76+
if (hasFilter)
77+
{
78+
rows = rows["results"];
79+
}
7280

7381
var items = rows.Select(row => row.ToObject<T>());
7482

SharpRepository.ODataRepository/Linq/ODataQueryable.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ private static IQueryExecutor CreateExecutor (string url, string databaseName)
1717

1818
// This constructor is called by our users, create a new IQueryExecutor.
1919
public ODataQueryable (string url, string databaseName)
20-
: base (QueryParser.CreateDefault(), CreateExecutor (url, databaseName))
20+
: base (QueryParser.CreateDefault(), CreateExecutor(url, databaseName))
2121
{
2222
}
2323

SharpRepository.ODataRepository/Linq/QueryGeneration/ODataApiGeneratorExpressionTreeVisitor.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -125,28 +125,28 @@ protected override Expression VisitMemberExpression (MemberExpression expression
125125
protected override Expression VisitConstantExpression (ConstantExpression expression)
126126
{
127127
// check to see if we don't need the quotes
128-
// var quotes = "'";
129-
// var value = expression.Value.ToString();
130-
// if (
131-
// expression.Type == typeof(Int32)
132-
// || expression.Type == typeof(Int16)
133-
// || expression.Type == typeof(Int64)
134-
// || expression.Type == typeof(Decimal)
135-
// || expression.Type == typeof(Double)
136-
// || expression.Type == typeof(Boolean)
137-
// )
138-
// {
139-
// quotes = "";
140-
// }
141-
// else if (expression.Type == typeof(DateTime) || expression.Type == typeof(DateTime?))
142-
// {
143-
// quotes = "";
144-
// value = String.Format("new Date('{0}')", value);
145-
// }
146-
//
147-
// _expression.AppendFormat("{1}{0}{1}", value, quotes);
148-
149-
_expression.Append(expression.Value.ToString());
128+
var quotes = "'";
129+
var value = expression.Value.ToString();
130+
if (
131+
expression.Type == typeof(Int32)
132+
|| expression.Type == typeof(Int16)
133+
|| expression.Type == typeof(Int64)
134+
|| expression.Type == typeof(Decimal)
135+
|| expression.Type == typeof(Double)
136+
|| expression.Type == typeof(Boolean)
137+
)
138+
{
139+
quotes = "";
140+
}
141+
else if (expression.Type == typeof(DateTime) || expression.Type == typeof(DateTime?))
142+
{
143+
quotes = "";
144+
value = String.Format("new Date('{0}')", value);
145+
}
146+
147+
_expression.AppendFormat("{1}{0}{1}", value, quotes);
148+
149+
//_expression.Append(expression.Value.ToString());
150150

151151
return expression;
152152
}

SharpRepository.ODataRepository/ODataDbRepositoryBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace SharpRepository.ODataRepository
1111
//protected ODataClient<T> Client;
1212
private readonly string _serverUrl;
1313
private readonly string _database;
14-
private string _typeName;
14+
private readonly string _typeName;
1515

1616
//private readonly ODataQueryProvider _provider;
1717
//private readonly IQueryable<T> _baseQuery;

SharpRepository.Tests.Integration/Spikes/ODataSpikes.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ public void NetflixTest()
2121
public void NetflixFindAllTest()
2222
{
2323
var repository = new ODataRepository<Title>("http://odata.netflix.com/v2/Catalog");
24-
var results = repository.FindAll(x => x.ReleaseYear == 1991);
24+
//var results = repository.FindAll(x => x.ReleaseYear == 1991 && x.ShortName.StartsWith("The")); // messes up the query syntax, look into this
25+
var results = repository.FindAll(x => x.ReleaseYear == 1991 && x.ShortName == "Backdraft");
2526

26-
results.Count().ShouldEqual(326);
27+
results.Count().ShouldEqual(1);
2728
}
2829
}
2930

0 commit comments

Comments
 (0)