Browse Source

Fix graphql names for field names. (#671)

pull/674/head
Sebastian Stehle 5 years ago
committed by GitHub
parent
commit
5c699239db
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 49
      backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/SchemaInfos.cs
  2. 10
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs
  3. 10
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs

49
backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/SchemaInfos.cs

@ -148,39 +148,38 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents
public string this[IField field] public string this[IField field]
{ {
get get => GetName(field.Name.ToCamelCase(), false);
{
return this[field.Name.ToCamelCase()];
}
} }
public string this[string name] public string this[string name]
{ {
get get => GetName(name, true);
{ }
Guard.NotNullOrEmpty(name, nameof(name));
if (!char.IsLetter(name[0]))
{
name = "gql_" + name;
}
else if (name.Equals("Content", StringComparison.OrdinalIgnoreCase))
{
name = $"{name}Entity";
}
// Avoid duplicate names. private string GetName(string name, bool isEntity)
if (!takenNames.TryGetValue(name, out var offset)) {
{ Guard.NotNullOrEmpty(name, nameof(name));
takenNames[name] = 0;
return name;
}
takenNames[name] = ++offset; if (!char.IsLetter(name[0]))
{
name = "gql_" + name;
}
else if (name.Equals("Content", StringComparison.OrdinalIgnoreCase) && isEntity)
{
name = $"{name}Entity";
}
// Add + 1 to all offset for backwars compatibility. // Avoid duplicate names.
return $"{name}{offset + 1}"; if (!takenNames.TryGetValue(name, out var offset))
{
takenNames[name] = 0;
return name;
} }
takenNames[name] = ++offset;
// Add + 1 to all offset for backwars compatibility.
return $"{name}{offset + 1}";
} }
} }
} }

10
backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs

@ -65,6 +65,12 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
var schemaDef = var schemaDef =
new Schema(schemaId.Name) new Schema(schemaId.Name)
.Publish() .Publish()
.AddNumber(16, "2_numbers", Partitioning.Invariant,
new NumberFieldProperties())
.AddNumber(17, "2-numbers", Partitioning.Invariant,
new NumberFieldProperties())
.AddNumber(18, "content", Partitioning.Invariant,
new NumberFieldProperties())
.AddJson(1, "my-json", Partitioning.Invariant, .AddJson(1, "my-json", Partitioning.Invariant,
new JsonFieldProperties()) new JsonFieldProperties())
.AddString(2, "my-string", Partitioning.Language, .AddString(2, "my-string", Partitioning.Language,
@ -97,10 +103,6 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
.AddBoolean(121, "nested-boolean") .AddBoolean(121, "nested-boolean")
.AddNumber(122, "nested-number") .AddNumber(122, "nested-number")
.AddNumber(123, "nested_number")) .AddNumber(123, "nested_number"))
.AddNumber(16, "2_numbers", Partitioning.Invariant,
new NumberFieldProperties())
.AddNumber(17, "2-numbers", Partitioning.Invariant,
new NumberFieldProperties())
.SetScripts(new SchemaScripts { Query = "<query-script>" }); .SetScripts(new SchemaScripts { Query = "<query-script>" });
schema = Mocks.Schema(appId, schemaId, schemaDef); schema = Mocks.Schema(appId, schemaId, schemaDef);

10
backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs

@ -32,6 +32,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
gql_2Numbers2 { gql_2Numbers2 {
iv iv
} }
content {
iv
}
myString { myString {
de de
} }
@ -92,6 +95,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
.AddField("2-numbers", .AddField("2-numbers",
new ContentFieldData() new ContentFieldData()
.AddInvariant(23)) .AddInvariant(23))
.AddField("content",
new ContentFieldData()
.AddInvariant(24))
.AddField("my-number", .AddField("my-number",
new ContentFieldData() new ContentFieldData()
.AddInvariant(1.0)) .AddInvariant(1.0))
@ -208,6 +214,10 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
{ {
iv = 23.0 iv = 23.0
}, },
["content"] = new
{
iv = 24.0
},
["myString"] = new ["myString"] = new
{ {
de = "value" de = "value"

Loading…
Cancel
Save