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, calling ‘analyzers` 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.
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/graphql/analysis/analyze_query.rb', line 15 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 { |r| r.finalize_reducer } end |