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 |