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