class PartialKs::Runner
Attributes
models_list[R]
Public Class Methods
new(models_list)
click to toggle source
# File lib/partial_ks/runner.rb, line 5 def initialize(models_list) @models_list = models_list end
Public Instance Methods
each_generation() { |generation| ... }
click to toggle source
# File lib/partial_ks/runner.rb, line 27 def each_generation return enum_for(:each_generation) unless block_given? generations.each do |generation| yield generation end end
run!() { |tables_to_filter, table_names| ... }
click to toggle source
# File lib/partial_ks/runner.rb, line 9 def run! each_generation do |generation| tables_to_filter = {} table_names = [] generation.each do |table| table_names << table.table_name filter_config = table.to_sql if !filter_config.nil? tables_to_filter[table.table_name] = filter_config end end yield tables_to_filter, table_names end end
Protected Instance Methods
generations()
click to toggle source
# File lib/partial_ks/runner.rb, line 37 def generations return @generations if defined?(@generations) @generations = [] q = [] models_list.each do |model, parent, filter| q << PartialKs::FilteredTable.new(model, nil, custom_filter_relation: filter) if parent.nil? end until q.empty? @generations << q next_generation = [] q.each do |table| models_list.each do |child_model, parent, filter| # I have access to parent here - link model to child_model next_generation << PartialKs::FilteredTable.new(child_model, table, custom_filter_relation: filter) if parent && parent.table_name == table.table_name end end q = next_generation end @generations end