class Viewy::DependencyManagement::ViewSorter

Public Instance Methods

sorted_materialized_view_subset(view_names:) click to toggle source

@return [Array<String>] the ordered names of the subset of materialized views in safe dependency order

# File lib/viewy/dependency_management/view_sorter.rb, line 27
def sorted_materialized_view_subset(view_names:)
  @views = generate_materialized_view_hash(Viewy::Models::MaterializedViewDependency.where(view_name: view_names))
  tsort
end
sorted_materialized_views() click to toggle source

@return [Array<String>] the ordered names of the materialized views in the system in safe dependency order

# File lib/viewy/dependency_management/view_sorter.rb, line 15
def sorted_materialized_views
  @views = generate_materialized_view_hash(Viewy::Models::MaterializedViewDependency.all)
  tsort
end
sorted_view_subset(view_names:) click to toggle source

@return [Array<String>] the ordered names of the subset of views in the system in safe dependency order

# File lib/viewy/dependency_management/view_sorter.rb, line 21
def sorted_view_subset(view_names:)
  @views = generate_view_hash(Viewy::Models::ViewDependency.where(view_name: view_names))
  tsort
end
sorted_views() click to toggle source

@return [Array<String>] the ordered names of all views in the system in safe dependency order

# File lib/viewy/dependency_management/view_sorter.rb, line 9
def sorted_views
  @views = generate_view_hash(Viewy::Models::ViewDependency.all)
  tsort
end

Private Instance Methods

generate_materialized_view_hash(view_collection) click to toggle source

@return [Hash] a hash with materialized view names as keys and their dependencies as an array of names

# File lib/viewy/dependency_management/view_sorter.rb, line 46
        def generate_materialized_view_hash(view_collection)
  views = view_collection.select(&:materialized_view).map do |dep|
    [dep.view_name, dep.view_dependencies]
  end
  Hash[views]
end
generate_view_hash(view_collection) click to toggle source

@return [Hash] a hash with all view names as keys and their dependencies as an array of names

# File lib/viewy/dependency_management/view_sorter.rb, line 38
        def generate_view_hash(view_collection)
  views = view_collection.map do |dep|
    [dep.view_name, dep.view_dependencies]
  end
  Hash[views]
end
tsort_each_child(view, &block) click to toggle source

@param name [String] the name of a materialized view

# File lib/viewy/dependency_management/view_sorter.rb, line 60
        def tsort_each_child(view, &block)
  views[view].each(&block)
end
tsort_each_node() { |view| ... } click to toggle source
# File lib/viewy/dependency_management/view_sorter.rb, line 53
        def tsort_each_node
  views.each_key do |view|
    yield view
  end
end
views() click to toggle source

@return [Hash] a hash with materialized view names as keys and their dependencies as an array of names

# File lib/viewy/dependency_management/view_sorter.rb, line 33
        def views
  @views
end