Class: GraphQL::Analysis::AST::QueryDepth

Inherits:
Analyzer
  • Object
show all
Defined in:
lib/graphql/analysis/ast/query_depth.rb

Direct Known Subclasses

MaxQueryDepth

Instance Method Summary collapse

Methods inherited from Analyzer

#analyze?

Constructor Details

#initialize(query) ⇒ QueryDepth

Returns a new instance of QueryDepth.


28
29
30
31
32
# File 'lib/graphql/analysis/ast/query_depth.rb', line 28

def initialize(query)
  @max_depth = 0
  @current_depth = 0
  super
end

Instance Method Details

#on_enter_field(node, parent, visitor) ⇒ Object


34
35
36
37
38
# File 'lib/graphql/analysis/ast/query_depth.rb', line 34

def on_enter_field(node, parent, visitor)
  return if visitor.skipping? || visitor.visiting_fragment_definition?

  @current_depth += 1
end

#on_leave_field(node, parent, visitor) ⇒ Object


40
41
42
43
44
45
46
47
# File 'lib/graphql/analysis/ast/query_depth.rb', line 40

def on_leave_field(node, parent, visitor)
  return if visitor.skipping? || visitor.visiting_fragment_definition?

  if @max_depth < @current_depth
    @max_depth = @current_depth
  end
  @current_depth -= 1
end

#resultObject


49
50
51
# File 'lib/graphql/analysis/ast/query_depth.rb', line 49

def result
  @max_depth
end