Module: ActiveGraph::Node::Query::QueryProxyEagerLoading
  
  
  
  
  
  
  
  
  
  
  
    - Included in:
 
    - QueryProxy
 
  
  
  
  
    - Defined in:
 
    - lib/active_graph/node/query/query_proxy_eager_loading.rb,
  lib/active_graph/node/query/query_proxy_eager_loading/association_tree.rb
 
  
  
 
Defined Under Namespace
  
    
  
    
      Classes: AssociationTree, IdentityMap
    
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
    Instance Method Details
    
      
  
  
    #association_tree_class  ⇒ Object 
  
  
  
  
    
      
45
46
47 
     | 
    
      # File 'lib/active_graph/node/query/query_proxy_eager_loading.rb', line 45
def association_tree_class
  AssociationTree
end 
     | 
  
 
    
      
  
  
    #first  ⇒ Object 
  
  
  
  
    
      
53
54
55 
     | 
    
      # File 'lib/active_graph/node/query/query_proxy_eager_loading.rb', line 53
def first
  (query.clause?(:order) ? self : order(order_property)).limit(1).to_a.first
end 
     | 
  
 
    
      
  
  
    
      
15
16
17
18
19
20
21
22
23
24
25
26
27 
     | 
    
      # File 'lib/active_graph/node/query/query_proxy_eager_loading.rb', line 15
def perform_query
  @_cache = IdentityMap.new
  build_query
    .map do |record, eager_data|
    record = cache_and_init(record, with_associations_tree)
    eager_data.zip(with_associations_tree.paths.map(&:last)).each do |eager_records, element|
      eager_records.first.zip(eager_records.last).each do |eager_record|
        add_to_cache(*eager_record, element)
      end
    end
    record
  end
end
     | 
  
 
    
      
  
  
    #pluck_vars(node, rel)  ⇒ Object 
  
  
  
  
    
      
11
12
13 
     | 
    
      # File 'lib/active_graph/node/query/query_proxy_eager_loading.rb', line 11
def pluck_vars(node, rel)
  with_associations_tree.empty? ? super : perform_query
end 
     | 
  
 
    
      
  
  
    #propagate_context(query_proxy)  ⇒ Object 
  
  
  
  
    
      
36
37
38
39 
     | 
    
      # File 'lib/active_graph/node/query/query_proxy_eager_loading.rb', line 36
def propagate_context(query_proxy)
  super
  query_proxy.instance_variable_set('@with_associations_tree', @with_associations_tree)
end
     | 
  
 
    
      
  
  
    #with_associations(*spec)  ⇒ Object 
  
  
  
  
    
      
29
30
31
32
33
34 
     | 
    
      # File 'lib/active_graph/node/query/query_proxy_eager_loading.rb', line 29
def with_associations(*spec)
  new_link.tap do |new_query_proxy|
    new_query_proxy.with_associations_tree = with_associations_tree.clone
    new_query_proxy.with_associations_tree.add_spec(spec)
  end
end
     | 
  
 
    
      
  
  
    #with_associations_tree  ⇒ Object 
  
  
  
  
    
      
41
42
43 
     | 
    
      # File 'lib/active_graph/node/query/query_proxy_eager_loading.rb', line 41
def with_associations_tree
  @with_associations_tree ||= association_tree_class.new(model)
end 
     | 
  
 
    
      
  
  
    #with_associations_tree=(tree)  ⇒ Object 
  
  
  
  
    
      
49
50
51 
     | 
    
      # File 'lib/active_graph/node/query/query_proxy_eager_loading.rb', line 49
def with_associations_tree=(tree)
  @with_associations_tree = tree
end 
     |