Exemplo n.º 1
0
 private IEnumerable <IDirective> GetFieldSelectionDirectives(
     ObjectField field,
     FieldNode selection)
 {
     foreach (DirectiveNode directive in selection.Directives)
     {
         if (_schema.TryGetDirectiveType(directive.Name.Value,
                                         out DirectiveType directiveType) &&
             directiveType.IsExecutable)
         {
             yield return(Directive.FromDescription(
                              directiveType,
                              new DirectiveDefinition(directive),
                              field));
         }
     }
 }
Exemplo n.º 2
0
 private IEnumerable <IDirective> GetFieldSelectionDirectives(
     IObjectField field,
     FieldNode selection)
 {
     for (var i = 0; i < selection.Directives.Count; i++)
     {
         DirectiveNode directive = selection.Directives[i];
         if (_schema.TryGetDirectiveType(directive.Name.Value,
                                         out DirectiveType? directiveType) &&
             directiveType.HasMiddleware)
         {
             yield return(Directive.FromDescription(
                              directiveType,
                              new DirectiveDefinition(directive),
                              field));
         }
     }
 }
Exemplo n.º 3
0
    private bool TryCompleteDirective(
        ITypeCompletionContext context,
        DirectiveDefinition definition,
        ISet <string> processed,
        [NotNullWhen(true)] out Directive?directive)
    {
        if (!context.TryGetDirectiveType(
                definition.Reference,
                out DirectiveType? directiveType))
        {
            directive = null;
            return(false);
        }

        if (!processed.Add(directiveType.Name) && !directiveType.IsRepeatable)
        {
            context.ReportError(
                DirectiveCollection_DirectiveIsUnique(
                    directiveType,
                    context.Type,
                    definition.ParsedDirective,
                    _source));
            directive = null;
            return(false);
        }

        if (directiveType.Locations.Contains(_location))
        {
            directive = Directive.FromDescription(directiveType, definition, _source);
            return(true);
        }

        context.ReportError(
            DirectiveCollection_LocationNotAllowed(
                directiveType,
                _location,
                context.Type,
                definition.ParsedDirective,
                _source));
        directive = null;
        return(false);
    }