class DBA::Diff
Public Instance Methods
call(url)
click to toggle source
# File lib/dba/diff.rb, line 4 def call(url) other_database = Sequel.connect(url) tables = database.tables other_tables = other_database.tables printer.print_diff tables, other_tables tables &= other_tables # only diff columns/indexes for tables that exist in both databases printer.print_diff list_columns(database, tables), list_columns(other_database, tables) printer.print_diff list_indexes(database, tables), list_indexes(other_database, tables) end
Private Instance Methods
format_column(name, info_hash, table_name)
click to toggle source
# File lib/dba/diff.rb, line 34 def format_column(name, info_hash, table_name) "#{table_name}.#{name} (#{info_hash.fetch(:type)})" end
format_index(name, info_hash)
click to toggle source
# File lib/dba/diff.rb, line 38 def format_index(name, info_hash) columns = info_hash.fetch(:columns).map(&:to_s).join(', ') "#{name} (#{columns})" end
list_columns(database, tables)
click to toggle source
# File lib/dba/diff.rb, line 22 def list_columns(database, tables) tables.inject([]) do |columns, table_name| columns + database.schema(table_name).map { |name, info| format_column(name, info, table_name) } end end
list_indexes(database, tables)
click to toggle source
# File lib/dba/diff.rb, line 28 def list_indexes(database, tables) tables.inject([]) do |indexes, table_name| indexes + database.indexes(table_name).map { |name, info| format_index(name, info) } end end