Browse Source

Comments

pull/849/head
Sebastian 4 years ago
parent
commit
41889b3f2b
  1. 6
      backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldEnumType.cs
  2. 4
      backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/Names.cs

6
backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldEnumType.cs

@ -16,13 +16,17 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents
{ {
Name = name; Name = name;
// Avoid conflicts with duplicate names.
var names = new Names(); var names = new Names();
foreach (var value in values) foreach (var value in values)
{ {
if (!Equals(value, null)) if (!Equals(value, null))
{ {
AddValue(names[value.ToString()!.Slugify().ToPascalCase()], null, value); // Get rid of special characters.
var valueName = value.ToString()!.Slugify().ToPascalCase();
AddValue(names[valueName], null, value);
} }
} }
} }

4
backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/Names.cs

@ -11,6 +11,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents
{ {
internal sealed class Names internal sealed class Names
{ {
// Reserver names that are used for other GraphQL types.
private static readonly HashSet<string> ReservedNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase) private static readonly HashSet<string> ReservedNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{ {
"Asset", "Asset",
@ -23,7 +24,6 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents
"JsonPrimitive", "JsonPrimitive",
"User" "User"
}; };
private readonly Dictionary<string, int> takenNames = new Dictionary<string, int>(); private readonly Dictionary<string, int> takenNames = new Dictionary<string, int>();
public string this[string name, bool isEntity = true] public string this[string name, bool isEntity = true]
@ -44,6 +44,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents
name = $"{name}Entity"; name = $"{name}Entity";
} }
// Avoid duplicate names.
if (!takenNames.TryGetValue(name, out var offset)) if (!takenNames.TryGetValue(name, out var offset))
{ {
takenNames[name] = 0; takenNames[name] = 0;
@ -52,6 +53,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents
takenNames[name] = ++offset; takenNames[name] = ++offset;
// Add + 1 to all offsets for backwards-compatibility.
return $"{name}{offset + 1}"; return $"{name}{offset + 1}";
} }
} }

Loading…
Cancel
Save