class PreloadFunction
Public Instance Methods
call(obj, args, ctx)
click to toggle source
# File lib/preload_function.rb, line 3 def call obj, args, ctx @ctx = ctx @json_tree = {} @result_tree = {} _call obj, args, ctx end
gen_accociations_tree(model_class = @root_model_class, tree = json_tree_without_root, result_tree = @result_tree)
click to toggle source
# File lib/preload_function.rb, line 33 def gen_accociations_tree model_class = @root_model_class, tree = json_tree_without_root, result_tree = @result_tree tree.each do |k, v| if v.present? && model_class.reflect_on_all_associations.map(&:name).include?(k) result_tree[k.to_sym] = {} next if model_class.reflections[k.to_s].options[:polymorphic] _model_class = model_class.reflections[k.to_s].class_name.constantize gen_accociations_tree _model_class, tree[k], result_tree[k.to_sym] end end end
included_model(model_class)
click to toggle source
# File lib/preload_function.rb, line 10 def included_model model_class @root_model_class = model_class recursion query_tree gen_accociations_tree model_class model_class.includes @result_tree end
json_tree_without_root()
click to toggle source
# File lib/preload_function.rb, line 29 def json_tree_without_root @json_tree.values.first end
query_tree()
click to toggle source
# File lib/preload_function.rb, line 17 def query_tree @ctx.query.document.children.first.selections.first end
recursion(node, tree = @json_tree)
click to toggle source
# File lib/preload_function.rb, line 21 def recursion node, tree = @json_tree node_key = node.name.underscore.to_sym tree[node_key] = {} node.selections.each do |n| recursion n, tree[node_key] end end