diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldEnumType.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldEnumType.cs index 905538b56..674668366 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/FieldEnumType.cs +++ b/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; + // Avoid conflicts with duplicate names. var names = new Names(); foreach (var value in values) { 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); } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/Names.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/Names.cs index ea7fcd434..04b6da64e 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/Contents/Names.cs +++ b/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 { + // Reserver names that are used for other GraphQL types. private static readonly HashSet ReservedNames = new HashSet(StringComparer.OrdinalIgnoreCase) { "Asset", @@ -23,7 +24,6 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents "JsonPrimitive", "User" }; - private readonly Dictionary takenNames = new Dictionary(); public string this[string name, bool isEntity = true] @@ -44,6 +44,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents name = $"{name}Entity"; } + // Avoid duplicate names. if (!takenNames.TryGetValue(name, out var offset)) { takenNames[name] = 0; @@ -52,6 +53,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Contents takenNames[name] = ++offset; + // Add + 1 to all offsets for backwards-compatibility. return $"{name}{offset + 1}"; } }