module GraphQL::Execution::DirectiveChecks

Boolean checks for how an AST node’s directives should influence its execution @api private

Constants

INCLUDE
SKIP

Public Instance Methods

include?(directive_ast_nodes, query) click to toggle source

@return [Boolean] Should this node be included in the query?

# File lib/graphql/execution/directive_checks.rb, line 14
def include?(directive_ast_nodes, query)
  directive_ast_nodes.each do |directive_ast_node|
    name = directive_ast_node.name
    directive_defn = query.schema.directives[name]
    case name
    when SKIP
      args = query.arguments_for(directive_ast_node, directive_defn)
      if args[:if] == true
        return false
      end
    when INCLUDE
      args = query.arguments_for(directive_ast_node, directive_defn)
      if args[:if] == false
        return false
      end
    else
      # Undefined directive, or one we don't care about
    end
  end
  true
end