Browse Source

Bad field name in GraphQL schema description (#370)

* change nested field name source

*  nested field unique name

* QueryGraphTypeVisitor property
pull/364/head
Adam Hladík 7 years ago
committed by Sebastian Stehle
parent
commit
880e8bf92d
  1. 4
      src/Squidex.Domain.Apps.Entities/Contents/GraphQL/GraphQLModel.cs
  2. 2
      src/Squidex.Domain.Apps.Entities/Contents/GraphQL/IGraphModel.cs
  3. 2
      src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentDataGraphType.cs
  4. 10
      src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/NestedGraphType.cs
  5. 6
      src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/QueryGraphTypeVisitor.cs

4
src/Squidex.Domain.Apps.Entities/Contents/GraphQL/GraphQLModel.cs

@ -136,9 +136,9 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
return partitionResolver(key); return partitionResolver(key);
} }
public (IGraphType ResolveType, ValueResolver Resolver) GetGraphType(ISchemaEntity schema, IField field) public (IGraphType ResolveType, ValueResolver Resolver) GetGraphType(ISchemaEntity schema, IField field, string fieldName)
{ {
return field.Accept(new QueryGraphTypeVisitor(schema, GetContentType, this, assetListType)); return field.Accept(new QueryGraphTypeVisitor(schema, GetContentType, this, assetListType, fieldName));
} }
public IGraphType GetAssetType() public IGraphType GetAssetType()

2
src/Squidex.Domain.Apps.Entities/Contents/GraphQL/IGraphModel.cs

@ -35,6 +35,6 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
IGraphType GetContentDataType(Guid schemaId); IGraphType GetContentDataType(Guid schemaId);
(IGraphType ResolveType, ValueResolver Resolver) GetGraphType(ISchemaEntity schema, IField field); (IGraphType ResolveType, ValueResolver Resolver) GetGraphType(ISchemaEntity schema, IField field, string fieldName);
} }
} }

2
src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentDataGraphType.cs

@ -27,7 +27,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types
foreach (var (field, fieldName, typeName) in schema.SchemaDef.Fields.SafeFields()) foreach (var (field, fieldName, typeName) in schema.SchemaDef.Fields.SafeFields())
{ {
var (resolvedType, valueResolver) = model.GetGraphType(schema, field); var (resolvedType, valueResolver) = model.GetGraphType(schema, field, fieldName);
if (valueResolver != null) if (valueResolver != null)
{ {

10
src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/NestedGraphType.cs

@ -16,18 +16,18 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types
{ {
public sealed class NestedGraphType : ObjectGraphType<JsonObject> public sealed class NestedGraphType : ObjectGraphType<JsonObject>
{ {
public NestedGraphType(IGraphModel model, ISchemaEntity schema, IArrayField field) public NestedGraphType(IGraphModel model, ISchemaEntity schema, IArrayField field, string fieldName)
{ {
var schemaType = schema.TypeName(); var schemaType = schema.TypeName();
var schemaName = schema.DisplayName(); var schemaName = schema.DisplayName();
var fieldName = field.DisplayName(); var fieldDisplayName = field.DisplayName();
Name = $"{schemaType}{fieldName}ChildDto"; Name = $"{schemaType}{fieldName}ChildDto";
foreach (var (nestedField, nestedName, _) in field.Fields.SafeFields()) foreach (var (nestedField, nestedName, _) in field.Fields.SafeFields())
{ {
var fieldInfo = model.GetGraphType(schema, nestedField); var fieldInfo = model.GetGraphType(schema, nestedField, nestedName);
if (fieldInfo.ResolveType != null) if (fieldInfo.ResolveType != null)
{ {
@ -38,12 +38,12 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types
Name = nestedName, Name = nestedName,
Resolver = resolver, Resolver = resolver,
ResolvedType = fieldInfo.ResolveType, ResolvedType = fieldInfo.ResolveType,
Description = $"The {fieldName}/{nestedField.DisplayName()} nested field." Description = $"The {fieldDisplayName}/{nestedField.DisplayName()} nested field."
}); });
} }
} }
Description = $"The structure of the {schemaName}.{fieldName} nested schema."; Description = $"The structure of the {schemaName}.{fieldDisplayName} nested schema.";
} }
private static FuncFieldResolver<object> ValueResolver(NestedField nestedField, (IGraphType ResolveType, ValueResolver Resolver) fieldInfo) private static FuncFieldResolver<object> ValueResolver(NestedField nestedField, (IGraphType ResolveType, ValueResolver Resolver) fieldInfo)

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

@ -22,13 +22,15 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types
private readonly Func<Guid, IGraphType> schemaResolver; private readonly Func<Guid, IGraphType> schemaResolver;
private readonly IGraphModel model; private readonly IGraphModel model;
private readonly IGraphType assetListType; private readonly IGraphType assetListType;
private readonly string fieldName;
public QueryGraphTypeVisitor(ISchemaEntity schema, Func<Guid, IGraphType> schemaResolver, IGraphModel model, IGraphType assetListType) public QueryGraphTypeVisitor(ISchemaEntity schema, Func<Guid, IGraphType> schemaResolver, IGraphModel model, IGraphType assetListType, string fieldName)
{ {
this.model = model; this.model = model;
this.assetListType = assetListType; this.assetListType = assetListType;
this.schema = schema; this.schema = schema;
this.schemaResolver = schemaResolver; this.schemaResolver = schemaResolver;
this.fieldName = fieldName;
} }
public (IGraphType ResolveType, ValueResolver Resolver) Visit(IArrayField field) public (IGraphType ResolveType, ValueResolver Resolver) Visit(IArrayField field)
@ -93,7 +95,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types
private (IGraphType ResolveType, ValueResolver Resolver) ResolveNested(IArrayField field) private (IGraphType ResolveType, ValueResolver Resolver) ResolveNested(IArrayField field)
{ {
var schemaFieldType = new ListGraphType(new NonNullGraphType(new NestedGraphType(model, schema, field))); var schemaFieldType = new ListGraphType(new NonNullGraphType(new NestedGraphType(model, schema, field, this.fieldName)));
return (schemaFieldType, NoopResolver); return (schemaFieldType, NoopResolver);
} }

Loading…
Cancel
Save