module GraphQLIncludable
Public Class Methods
includes(ctx, starting_at: nil)
click to toggle source
# File lib/graphql_includable.rb, line 9 def self.includes(ctx, starting_at: nil) ActiveSupport::Notifications.instrument('graphql_includable.includes') do |instrument| instrument[:operation_name] = ctx.query&.operation_name instrument[:field_name] = ctx.irep_node.name instrument[:starting_at] = starting_at includes = Includes.new(nil) resolver = Resolver.new(ctx) node = ctx.irep_node node = node_for_path(node, starting_at) if starting_at.present? generated_includes = if node.present? resolver.includes_for_node(node, includes) includes.active_record_includes end instrument[:includes] = generated_includes generated_includes end end
node_for_path(node, path_into_query)
click to toggle source
# File lib/graphql_includable.rb, line 31 def self.node_for_path(node, path_into_query) children = node.scoped_children[node.return_type.unwrap]&.with_indifferent_access || {} children.dig(path_into_query) end