class KatteHiveAutodep::Resolver
Public Class Methods
call(nodes)
click to toggle source
# File lib/katte_hive_autodep/resolver.rb, line 10 def self.call(nodes) new.call(nodes) end
new()
click to toggle source
# File lib/katte_hive_autodep/resolver.rb, line 5 def initialize @table_node_mapping = {} @dependency_mapping = {} end
Public Instance Methods
call(nodes)
click to toggle source
# File lib/katte_hive_autodep/resolver.rb, line 13 def call(nodes) hive_nodes = find_hive_nodes(nodes) load_all(hive_nodes) resolve end
Private Instance Methods
add_dependency(node, hive_table)
click to toggle source
# File lib/katte_hive_autodep/resolver.rb, line 25 def add_dependency(node, hive_table) (@dependency_mapping[node] ||= []) << hive_table end
add_table(node, hive_table)
click to toggle source
# File lib/katte_hive_autodep/resolver.rb, line 22 def add_table(node, hive_table) (@table_node_mapping[hive_table] ||= []) << node end
find_hive_nodes(nodes)
click to toggle source
# File lib/katte_hive_autodep/resolver.rb, line 42 def find_hive_nodes(nodes) nodes.select {|node| node.file_type.extname == 'sql' } end
load(node)
click to toggle source
# File lib/katte_hive_autodep/resolver.rb, line 29 def load(node) dependency = HDP.new.run(node.path) dependency["sources"].each do |src| add_dependency(node, src) end dependency["destinations"].each do |dst| add_table(node, dst) end end
load_all(nodes)
click to toggle source
# File lib/katte_hive_autodep/resolver.rb, line 39 def load_all(nodes) nodes.each {|node| load node } end
resolve()
click to toggle source
# File lib/katte_hive_autodep/resolver.rb, line 48 def resolve @dependency_mapping.each {|node, hive_tables| hive_tables.each {|hive_table| next unless @table_node_mapping[hive_table] @table_node_mapping[hive_table].each do |depending_node| next unless depending_node.is_a? Katte::Node::Base node.requires << depending_node.name end } } end