Class: GraphQL::Analysis::FieldUsage
- Inherits:
- 
      Object
      
        - Object
- GraphQL::Analysis::FieldUsage
 
- Defined in:
- lib/graphql/analysis/field_usage.rb
Overview
A query reducer for tracking both field usage and deprecated field usage.
Instance Method Summary collapse
- 
  
    
      #call(memo, visit_type, irep_node)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
- 
  
    
      #final_value(memo)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
- 
  
    
      #initial_value(query)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
- 
  
    
      #initialize(&block)  ⇒ FieldUsage 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of FieldUsage. 
Constructor Details
#initialize(&block) ⇒ FieldUsage
Returns a new instance of FieldUsage.
| 16 17 18 | # File 'lib/graphql/analysis/field_usage.rb', line 16 def initialize(&block) @field_usage_handler = block end | 
Instance Method Details
#call(memo, visit_type, irep_node) ⇒ Object
| 28 29 30 31 32 33 34 35 36 37 38 | # File 'lib/graphql/analysis/field_usage.rb', line 28 def call(memo, visit_type, irep_node) if irep_node.ast_node.is_a?(GraphQL::Language::Nodes::Field) && visit_type == :leave field = "#{irep_node.owner_type.name}.#{irep_node.definition.name}" memo[:used_fields] << field if irep_node.definition.deprecation_reason memo[:used_deprecated_fields] << field end end memo end | 
#final_value(memo) ⇒ Object
| 40 41 42 | # File 'lib/graphql/analysis/field_usage.rb', line 40 def final_value(memo) @field_usage_handler.call(memo[:query], memo[:used_fields].to_a, memo[:used_deprecated_fields].to_a) end | 
#initial_value(query) ⇒ Object
| 20 21 22 23 24 25 26 | # File 'lib/graphql/analysis/field_usage.rb', line 20 def initial_value(query) { query: query, used_fields: Set.new, used_deprecated_fields: Set.new } end |