Module: GraphQL::Analysis
- Defined in:
- lib/graphql/analysis/field_usage.rb,
lib/graphql/analysis/query_depth.rb,
lib/graphql/analysis/analyze_query.rb,
lib/graphql/analysis/reducer_state.rb,
lib/graphql/analysis/max_query_depth.rb,
lib/graphql/analysis/query_complexity.rb,
lib/graphql/analysis/max_query_complexity.rb
Defined Under Namespace
Classes: FieldUsage, MaxQueryComplexity, MaxQueryDepth, QueryComplexity, QueryDepth, ReducerState
Class Method Summary collapse
-
.analyze_query(query, analyzers) ⇒ Array<Any>
Visit
query
's internal representation, callinganalyzers
along the way.
Class Method Details
.analyze_query(query, analyzers) ⇒ Array<Any>
Visit query
's internal representation, calling analyzers
along the way.
- First, query analyzers are initialized by calling
.initial_value(query)
, if they respond to that method. - Then, they receive
.call(memo, visit_type, irep_node)
, where visit type is:enter
or:leave
. - Last, they receive
.final_value(memo)
, if they respond to that method.
It returns an array of final memo
values in the order that analyzers
were passed in.
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/graphql/analysis/analyze_query.rb', line 16 def analyze_query(query, analyzers) reducer_states = analyzers.map { |r| ReducerState.new(r, query) } irep = query.internal_representation irep.each do |name, op_node| reduce_node(op_node, reducer_states) end reducer_states.map(&:finalize_reducer) end |