Example #1
0
    private static void DeclareFields(
        InterfaceTypeDefinition parent,
        IReadOnlyCollection <FieldDefinitionNode> fields,
        bool preserveSyntaxNodes)
    {
        foreach (FieldDefinitionNode field in fields)
        {
            var fieldDefinition = new InterfaceFieldDefinition(
                field.Name.Value,
                field.Description?.Value,
                TypeReference.Create(field.Type));
            fieldDefinition.BindTo = field.GetBindingValue();

            if (preserveSyntaxNodes)
            {
                fieldDefinition.SyntaxNode = field;
            }

            SdlToTypeSystemHelper.AddDirectives(fieldDefinition, field);

            if (field.DeprecationReason() is { Length: > 0 } reason)
            {
                fieldDefinition.DeprecationReason = reason;
            }

            DeclareFieldArguments(fieldDefinition, field, preserveSyntaxNodes);

            parent.Fields.Add(fieldDefinition);
        }
    }
 private static void RewriteInterfaceFieldType(
     IDescriptorContext context,
     InterfaceFieldDefinition definition)
 {
     if (definition.Type is ExtendedTypeReference typeReference)
     {
         ITypeInfo     typeInfo = context.TypeInspector.CreateTypeInfo(typeReference.Type);
         IExtendedType type     = RewriteType(context.TypeInspector, typeInfo);
         definition.Type = typeReference.WithType(type);
     }
     else
     {
         throw new SchemaException(SchemaErrorBuilder.New()
                                   .SetMessage("Unable to resolve type from field `{0}`.", definition.Name)
                                   .Build());
     }
 }
Example #3
0
    private static void DeclareFieldArguments(
        InterfaceFieldDefinition parent,
        FieldDefinitionNode field,
        bool preserveSyntaxNodes)
    {
        foreach (InputValueDefinitionNode argument in field.Arguments)
        {
            var argumentDefinition = new ArgumentDefinition(
                argument.Name.Value,
                argument.Description?.Value,
                TypeReference.Create(argument.Type),
                argument.DefaultValue);
            argumentDefinition.BindTo = argument.GetBindingValue();

            if (preserveSyntaxNodes)
            {
                argumentDefinition.SyntaxNode = argument;
            }

            SdlToTypeSystemHelper.AddDirectives(argumentDefinition, argument);

            parent.Arguments.Add(argumentDefinition);
        }
    }
Example #4
0
 static InterfaceField CreateField(InterfaceFieldDefinition fieldDef, int index)
 => new(fieldDef, index);