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); 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) 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 (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(); 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, .AddOrUpdateField(new AssetsField(6, "pictures", Partitioning.Invariant,
new AssetsFieldProperties())) new AssetsFieldProperties()))
.AddOrUpdateField(new ReferencesField(7, "friends", Partitioning.Invariant, .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 IBsonSerializerRegistry registry = BsonSerializer.SerializerRegistry;
private readonly IBsonSerializer<MongoContentEntity> serializer = BsonSerializer.SerializerRegistry.GetSerializer<MongoContentEntity>(); private readonly IBsonSerializer<MongoContentEntity> serializer = BsonSerializer.SerializerRegistry.GetSerializer<MongoContentEntity>();
@ -83,6 +85,15 @@ namespace Squidex.Domain.Apps.Read.Contents
Assert.NotNull(parser); 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] [Fact]
public void Should_create_not_operator() public void Should_create_not_operator()
{ {

Loading…
Cancel
Save