module Sequel::GraphEach
Public Instance Methods
Source
# File lib/sequel/extensions/graph_each.rb 26 def each 27 if @opts[:graph] && !@opts[:eager_graph] 28 graph_each{|r| yield r} 29 else 30 super 31 end 32 end
Call graph_each
for graphed datasets that are not being eager graphed.
Calls superclass method
Source
# File lib/sequel/extensions/graph_each.rb 35 def with_sql_each(sql) 36 if @opts[:graph] && !@opts[:eager_graph] 37 graph_each(sql){|r| yield r} 38 else 39 super 40 end 41 end
Call graph_each
for graphed datasets that are not being eager graphed.
Calls superclass method
Private Instance Methods
Source
# File lib/sequel/extensions/graph_each.rb 48 def graph_each(sql=select_sql) 49 # Reject tables with nil datasets, as they are excluded from 50 # the result set 51 datasets = @opts[:graph][:table_aliases].to_a.reject{|ta,ds| ds.nil?} 52 # Get just the list of table aliases into a local variable, for speed 53 table_aliases = datasets.map{|ta,ds| ta} 54 # Get an array of arrays, one for each dataset, with 55 # the necessary information about each dataset, for speed 56 datasets = datasets.map{|ta, ds| [ta, ds, ds.row_proc]} 57 # Use the manually set graph aliases, if any, otherwise 58 # use the ones automatically created by .graph 59 column_aliases = @opts[:graph][:column_aliases] 60 fetch_rows(sql) do |r| 61 graph = {} 62 # Create the sub hashes, one per table 63 table_aliases.each{|ta| graph[ta]={}} 64 # Split the result set based on the column aliases 65 # If there are columns in the result set that are 66 # not in column_aliases, they are ignored 67 column_aliases.each do |col_alias, tc| 68 ta, column = tc 69 graph[ta][column] = r[col_alias] 70 end 71 # For each dataset run the row_proc if applicable 72 datasets.each do |ta,ds,rp| 73 g = graph[ta] 74 graph[ta] = if g.values.any?{|x| !x.nil?} 75 rp ? rp.call(g) : g 76 else 77 nil 78 end 79 end 80 81 yield graph 82 end 83 self 84 end
Fetch the rows, split them into component table parts, tranform and run the row_proc on each part (if applicable), and yield a hash of the parts.