Class: GraphQL::Analysis::QueryDepth
- Defined in:
 - lib/graphql/analysis/query_depth.rb
 
Overview
A query reducer for measuring the depth of a given query.
See https://graphql-ruby.org/queries/ast_analysis.html for more examples.
Direct Known Subclasses
Instance Method Summary collapse
- 
  
    
      #initialize(query)  ⇒ QueryDepth 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of QueryDepth.
 - 
  
    
      #on_enter_field(node, parent, visitor)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #on_leave_field(node, parent, visitor)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #result  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 
Methods inherited from Analyzer
Constructor Details
#initialize(query) ⇒ QueryDepth
Returns a new instance of QueryDepth.
      27 28 29 30 31 32  | 
    
      # File 'lib/graphql/analysis/query_depth.rb', line 27 def initialize(query) @max_depth = 0 @current_depth = 0 @count_introspection_fields = query.schema.count_introspection_fields super end  | 
  
Instance Method Details
#on_enter_field(node, parent, visitor) ⇒ Object
      34 35 36 37 38 39 40  | 
    
      # File 'lib/graphql/analysis/query_depth.rb', line 34 def on_enter_field(node, parent, visitor) return if visitor.skipping? || visitor.visiting_fragment_definition? || (@count_introspection_fields == false && visitor.field_definition.introspection?) @current_depth += 1 end  | 
  
#on_leave_field(node, parent, visitor) ⇒ Object
      42 43 44 45 46 47 48 49 50 51  | 
    
      # File 'lib/graphql/analysis/query_depth.rb', line 42 def on_leave_field(node, parent, visitor) return if visitor.skipping? || visitor.visiting_fragment_definition? || (@count_introspection_fields == false && visitor.field_definition.introspection?) if @max_depth < @current_depth @max_depth = @current_depth end @current_depth -= 1 end  | 
  
#result ⇒ Object
      53 54 55  | 
    
      # File 'lib/graphql/analysis/query_depth.rb', line 53 def result @max_depth end  |