private static void DeclareFields(
            IInterfaceTypeDescriptor typeDescriptor,
            IReadOnlyCollection <FieldDefinitionNode> fieldDefinitions)
        {
            foreach (FieldDefinitionNode fieldDefinition in fieldDefinitions)
            {
                IInterfaceFieldDescriptor fieldDescriptor = typeDescriptor
                                                            .Field(fieldDefinition.Name.Value)
                                                            .Description(fieldDefinition.Description?.Value)
                                                            .Type(fieldDefinition.Type)
                                                            .SyntaxNode(fieldDefinition);

                foreach (DirectiveNode directive in fieldDefinition.Directives)
                {
                    if (!directive.IsDeprecationReason())
                    {
                        fieldDescriptor.Directive(directive);
                    }
                }

                string deprecactionReason = fieldDefinition.DeprecationReason();
                if (!string.IsNullOrEmpty(deprecactionReason))
                {
                    fieldDescriptor.Deprecated(deprecactionReason);
                }

                DeclareFieldArguments(fieldDescriptor, fieldDefinition);
            }
        }
示例#2
0
        private static void DeclareFieldArguments(
            IReadOnlySchemaOptions schemaOptions,
            IInterfaceFieldDescriptor fieldDescriptor,
            FieldDefinitionNode fieldDefinition)
        {
            foreach (InputValueDefinitionNode inputFieldDefinition in
                     fieldDefinition.Arguments)
            {
                fieldDescriptor.Argument(inputFieldDefinition.Name.Value,
                                         a =>
                {
                    foreach (DirectiveNode directive in
                             inputFieldDefinition.Directives)
                    {
                        fieldDescriptor.Directive(directive);
                    }

                    a.Description(inputFieldDefinition.Description?.Value)
                    .Type(inputFieldDefinition.Type)
                    .DefaultValue(inputFieldDefinition.DefaultValue)
                    .SyntaxNode(schemaOptions.PreserveSyntaxNodes
                                ? inputFieldDefinition
                                : null);
                });
            }
        }
    public static IInterfaceFieldDescriptor Cost(
        this IInterfaceFieldDescriptor descriptor,
        int complexity)
    {
        if (descriptor is null)
        {
            throw new ArgumentNullException(nameof(descriptor));
        }

        return(descriptor.Directive(new CostDirective(complexity)));
    }
    public static IInterfaceFieldDescriptor Cost(
        this IInterfaceFieldDescriptor descriptor,
        int complexity,
        params MultiplierPathString[] multipliers)
    {
        if (descriptor is null)
        {
            throw new ArgumentNullException(nameof(descriptor));
        }

        return(descriptor.Directive(
                   new CostDirective(complexity, multipliers)));
    }
        private static void DeclareFieldArguments(
            IInterfaceFieldDescriptor fieldDescriptor,
            FieldDefinitionNode fieldDefinition)
        {
            foreach (InputValueDefinitionNode inputFieldDefinition in
                     fieldDefinition.Arguments)
            {
                fieldDescriptor.Argument(inputFieldDefinition.Name.Value,
                                         a =>
                {
                    foreach (DirectiveNode directive in
                             inputFieldDefinition.Directives)
                    {
                        fieldDescriptor.Directive(directive);
                    }

                    a.Description(inputFieldDefinition.Description?.Value)
                    .Type(inputFieldDefinition.Type)
                    .DefaultValue(inputFieldDefinition.DefaultValue)
                    .SyntaxNode(inputFieldDefinition);
                });
            }
        }