Module: GraphQL::QueryResolver
- Defined in:
- lib/graphql/query_resolver.rb,
lib/graphql/query_resolver/version.rb
Constant Summary collapse
- VERSION =
"0.1.1"
Class Method Summary collapse
Class Method Details
.map_dependencies(class_name, ast_node) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/graphql/query_resolver.rb', line 25 def self.map_dependencies(class_name, ast_node) dependencies = {} ast_node.selections.each do |selection| name = selection.name if class_name.reflections.with_indifferent_access[selection.name].present? begin current_class_name = selection.name.singularize.classify.constantize dependencies[name] = map_dependencies(current_class_name, selection) rescue NameError selection_name = class_name.reflections.with_indifferent_access[selection.name].[:class_name] current_class_name = selection_name.singularize.classify.constantize dependencies[selection.name.to_sym] = map_dependencies(current_class_name, selection) next end end end dependencies end |
.run(model_class, context, return_type) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/graphql/query_resolver.rb', line 7 def self.run(model_class, context, return_type) to_load = yield dependencies = {} reflection_dependencies = map_dependencies(model_class, context.ast_node) dependencies = reflection_dependencies.merge(dependencies) if dependencies.any? && to_load.present? if ActiveRecord::VERSION::MAJOR < 4 ActiveRecord::Associations::Preloader.new(to_load, dependencies).run else ActiveRecord::Associations::Preloader.new.preload(to_load, dependencies) end end to_load end |