Sha256: 62ce261062bb5b9f2e2e64a960e9f76c8976725445edccf65df5f504e6d6e248
Contents?: true
Size: 1.45 KB
Versions: 2
Compression:
Stored size: 1.45 KB
Contents
require "graphql" require "graphql/query_resolver/version" module GraphQL module QueryResolver 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 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].options[: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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
graphql-query-resolver-0.1.2 | lib/graphql/query_resolver.rb |
graphql-query-resolver-0.1.1 | lib/graphql/query_resolver.rb |