Class: Dexter::TableResolver

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/dexter/table_resolver.rb

Constant Summary

Constants included from Logging

Logging::COLOR_CODES

Instance Method Summary collapse

Methods included from Logging

#colorize, #log, #output

Constructor Details

#initialize(connection, queries, log_level:) ⇒ TableResolver



5
6
7
8
9
# File 'lib/dexter/table_resolver.rb', line 5

def initialize(connection, queries, log_level:)
  @connection = connection
  @queries = queries
  @log_level = log_level
end

Instance Method Details

#performObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/dexter/table_resolver.rb', line 11

def perform
  tables = Set.new(database_tables + materialized_views)
  no_schema_tables = self.no_schema_tables(tables)
  view_tables = self.view_tables(no_schema_tables)

  @queries.each do |query|
    # add schema to table if needed
    query_tables = self.tables(query).map { |t| no_schema_tables[t] || t }

    # substitute view tables
    query.tables = query_tables.flat_map { |t| view_tables[t] || [t] }.uniq
    query.tables_from_views = query.tables - query_tables

    query.missing_tables = !query.tables.all? { |t| tables.include?(t) }
  end
end