Browse Source

Replace dashes with underscore for OData (EDM) queries: Closes #96

pull/100/head
Sebastian Stehle 9 years ago
parent
commit
fa3b832058
  1. 4
      src/Squidex.Domain.Apps.Core/Schemas/Field.cs
  2. 4
      src/Squidex.Domain.Apps.Read.MongoDb/Contents/Visitors/PropertyVisitor.cs
  3. 13
      tests/Squidex.Domain.Apps.Read.Tests/Contents/ODataQueryTests.cs

4
src/Squidex.Domain.Apps.Core/Schemas/Field.cs

@ -164,7 +164,9 @@ namespace Squidex.Domain.Apps.Core.Schemas
partitionType.AddStructuralProperty(partitionItem.Key, edmValueType);
}
edmType.AddStructuralProperty(Name, new EdmComplexTypeReference(partitionType, false));
var edmName = Name.Replace("-", "_");
edmType.AddStructuralProperty(edmName, new EdmComplexTypeReference(partitionType, false));
}
public void AddToJsonSchema(JsonSchema4 schema, PartitionResolver partitionResolver, string schemaName, Func<string, JsonSchema4, JsonSchema4> schemaResolver)

4
src/Squidex.Domain.Apps.Read.MongoDb/Contents/Visitors/PropertyVisitor.cs

@ -28,7 +28,9 @@ namespace Squidex.Domain.Apps.Read.MongoDb.Contents.Visitors
if (propertyNames.Length == 3)
{
if (!schema.FieldsByName.TryGetValue(propertyNames[1], out Field field))
var edmName = propertyNames[1].Replace("_", "-");
if (!schema.FieldsByName.TryGetValue(edmName, out Field field))
{
throw new NotSupportedException();
}

13
tests/Squidex.Domain.Apps.Read.Tests/Contents/ODataQueryTests.cs

@ -46,7 +46,9 @@ namespace Squidex.Domain.Apps.Read.Contents
.AddOrUpdateField(new AssetsField(6, "pictures", Partitioning.Invariant,
new AssetsFieldProperties()))
.AddOrUpdateField(new ReferencesField(7, "friends", Partitioning.Invariant,
new ReferencesFieldProperties()));
new ReferencesFieldProperties()))
.AddOrUpdateField(new StringField(8, "dashed-field", Partitioning.Invariant,
new StringFieldProperties()));
private readonly IBsonSerializerRegistry registry = BsonSerializer.SerializerRegistry;
private readonly IBsonSerializer<MongoContentEntity> serializer = BsonSerializer.SerializerRegistry.GetSerializer<MongoContentEntity>();
@ -83,6 +85,15 @@ namespace Squidex.Domain.Apps.Read.Contents
Assert.NotNull(parser);
}
[Fact]
public void Should_make_query_with_underscore_field()
{
var i = F("$filter=data/dashed_field/iv eq 'Value'");
var o = C("{ 'do.8.iv' : 'Value' }");
Assert.Equal(o, i);
}
[Fact]
public void Should_create_not_operator()
{

Loading…
Cancel
Save