mirror of https://github.com/Squidex/squidex.git
29 changed files with 190 additions and 54 deletions
@ -0,0 +1,48 @@ |
|||
// ==========================================================================
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|||
// All rights reserved. Licensed under the MIT license.
|
|||
// ==========================================================================
|
|||
|
|||
using System.Linq; |
|||
using GraphQL.Types; |
|||
using Newtonsoft.Json.Linq; |
|||
using Squidex.Domain.Apps.Core.Schemas; |
|||
using Squidex.Domain.Apps.Entities.Schemas; |
|||
using Squidex.Infrastructure; |
|||
|
|||
namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types |
|||
{ |
|||
public sealed class NestedObjectGraphType : ObjectGraphType<JObject> |
|||
{ |
|||
public NestedObjectGraphType(IGraphModel model, ISchemaEntity schema, IArrayField field) |
|||
{ |
|||
var schemaType = schema.TypeName(); |
|||
var schemaName = schema.DisplayName(); |
|||
|
|||
var fieldType = field.TypeName(); |
|||
var fieldName = field.DisplayName(); |
|||
|
|||
Name = $"{schemaType}{fieldName}ChildDto"; |
|||
|
|||
foreach (var nestedField in field.Fields.Where(x => !x.IsHidden)) |
|||
{ |
|||
var fieldInfo = model.GetGraphType(schema, nestedField); |
|||
|
|||
if (fieldInfo.ResolveType != null) |
|||
{ |
|||
AddField(new FieldType |
|||
{ |
|||
Name = nestedField.Name.ToCamelCase(), |
|||
Resolver = fieldInfo.Resolver, |
|||
ResolvedType = fieldInfo.ResolveType, |
|||
Description = $"The {fieldName}/{nestedField.DisplayName()} nested field." |
|||
}); |
|||
} |
|||
} |
|||
|
|||
Description = $"The structure of a {schemaName}.{fieldName} child schema."; |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue