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 AddFilterArguments <TFilter>( this IInterfaceFieldDescriptor descriptor) where TFilter : class, IInputType, IFilterInputType { return(descriptor.Argument(_whereArgumentNamePlaceholder, a => a.Type <TFilter>().Extend().ConfigureArgumentName())); }
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); } }
public static IInterfaceFieldDescriptor AddFilterArguments <TFilter>( this IInterfaceFieldDescriptor descriptor) where TFilter : class, IInputType, IFilterInputType { return(descriptor.Argument(_whereArgumentName, a => a.Type <TFilter>())); }
public override void OnConfigure( IDescriptorContext context, IInterfaceFieldDescriptor descriptor, MemberInfo member) { descriptor.Extend().OnBeforeCompletion( (c, d) => d.ContextData.Add("abc", "def")); }
public static IInterfaceFieldDescriptor UsePagination <TSchemaType>(this IInterfaceFieldDescriptor descriptor) where TSchemaType : class, IOutputType { descriptor .AddPaginationArguments() .Type <PaginationType <TSchemaType> >(); return(descriptor); }
public static IInterfaceFieldDescriptor AddPagingArguments( this IInterfaceFieldDescriptor descriptor) { return(descriptor .Argument("first", a => a.Type <PaginationAmountType>()) .Argument("after", a => a.Type <StringType>()) .Argument("last", a => a.Type <PaginationAmountType>()) .Argument("before", a => a.Type <StringType>())); }
public static IInterfaceFieldDescriptor UsePaging <TSchemaType>( this IInterfaceFieldDescriptor descriptor) where TSchemaType : class, IOutputType { descriptor .AddPagingArguments() .Type <ConnectionWithCountType <TSchemaType> >(); return(descriptor); }
public static IInterfaceFieldDescriptor ID(this IInterfaceFieldDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } RelayIdFieldHelpers.ApplyIdToField(descriptor); return(descriptor); }
public static IInterfaceFieldDescriptor Cost( this IInterfaceFieldDescriptor descriptor, int complexity) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } return(descriptor.Directive(new CostDirective(complexity))); }
/// <summary> /// Adds the offset paging arguments to an interface field. /// </summary> public static IInterfaceFieldDescriptor AddOffsetPagingArguments( this IInterfaceFieldDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } return(descriptor .Argument(OffsetPagingArgumentNames.Skip, a => a.Type <IntType>()) .Argument(OffsetPagingArgumentNames.Take, a => a.Type <IntType>())); }
public static IInterfaceFieldDescriptor ID( this IInterfaceFieldDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } descriptor.Extend().OnBeforeCreate(RewriteInterfaceFieldType); return(descriptor); }
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))); }
public static IInterfaceFieldDescriptor AddPagingArguments( this IInterfaceFieldDescriptor descriptor) { if (descriptor == null) { throw new ArgumentNullException(nameof(descriptor)); } return(descriptor .Argument(CursorPagingArgumentNames.First, a => a.Type <IntType>()) .Argument(CursorPagingArgumentNames.After, a => a.Type <StringType>()) .Argument(CursorPagingArgumentNames.Last, a => a.Type <IntType>()) .Argument(CursorPagingArgumentNames.Before, a => a.Type <StringType>())); }
private 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); DeclareFieldArguments(fieldDescriptor, fieldDefinition); } }
/// <summary> /// Specifies the type of an interface field with GraphQL SDL type syntax. /// </summary> /// <param name="descriptor"> /// The interface field descriptor. /// </param> /// <param name="typeSyntax"> /// The GraphQL SDL type syntax. /// </param> /// <returns> /// Returns the interface field descriptor for configuration chaining. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="descriptor"/> is <c>null</c>. /// <paramref name="typeSyntax"/> is <c>null</c>. /// </exception> /// <exception cref="SyntaxException"> /// The GraphQL SDL type syntax is invalid. /// </exception> public static IInterfaceFieldDescriptor Type( this IInterfaceFieldDescriptor descriptor, string typeSyntax) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } if (typeSyntax is null) { throw new ArgumentNullException(nameof(typeSyntax)); } return(descriptor.Type(Utf8GraphQLParser.Syntax.ParseTypeReference(typeSyntax))); }
/// <summary> /// Applies the offset paging middleware to the current field. /// </summary> /// <param name="descriptor"> /// The object field descriptor. /// </param> /// <param name="type"> /// The schema type representation of the item type. /// </param> /// <param name="options"> /// The paging settings that shall be applied to this field. /// </param> /// <returns> /// Returns the field descriptor for chaining in other configurations. /// </returns> public static IInterfaceFieldDescriptor UseOffsetPaging( this IInterfaceFieldDescriptor descriptor, Type?type = null, PagingOptions options = default) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } descriptor .AddOffsetPagingArguments() .Extend() .OnBeforeCreate((c, d) => d.Type = CreateTypeRef(c, d.Member, type, options)); return(descriptor); }
private void DeclareFieldArguments( IInterfaceFieldDescriptor fieldDescriptor, FieldDefinitionNode fieldDefinition) { foreach (InputValueDefinitionNode inputFieldDefinition in fieldDefinition.Arguments) { fieldDescriptor.Argument(inputFieldDefinition.Name.Value, a => { a.Description(inputFieldDefinition.Description?.Value) .Type(inputFieldDefinition.Type) .DefaultValue(inputFieldDefinition.DefaultValue) .SyntaxNode(inputFieldDefinition); }); } }
public static IInterfaceFieldDescriptor UsePaging <TSchemaType>( this IInterfaceFieldDescriptor descriptor, PagingOptions options = default) where TSchemaType : class, IOutputType => UsePaging(descriptor, typeof(TSchemaType), options);
public static IInterfaceFieldDescriptor AddPaginationArguments(this IInterfaceFieldDescriptor descriptor) { return(descriptor .Argument("pageNumber", a => a.Type <IntType>()) .Argument("limit", a => a.Type <IntType>())); }
public abstract void OnConfigure( IDescriptorContext context, IInterfaceFieldDescriptor descriptor, MemberInfo member);
public abstract void OnConfigure(IInterfaceFieldDescriptor descriptor);