class Viewy::DependencyManagement::ViewSorter
Public Instance Methods
@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
@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
@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
@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
@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
@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
@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
# File lib/viewy/dependency_management/view_sorter.rb, line 53 def tsort_each_node views.each_key do |view| yield view end end
@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