class Databender::Connection

Public Class Methods

new(connection_params) click to toggle source
# File lib/databender/connection.rb, line 7
def initialize(connection_params)
  @conn = ActiveRecord::Base.establish_connection(connection_params).connection
end

Public Instance Methods

columns_for(db_name, table_name) click to toggle source
# File lib/databender/connection.rb, line 27
def columns_for(db_name, table_name)
  execute(%[
              SELECT column_name
              FROM information_schema.columns
              WHERE table_schema = '#{db_name}'
                    and table_name = '#{table_name}';
           ])
end
execute(sql) click to toggle source
# File lib/databender/connection.rb, line 11
def execute(sql)
  @conn.execute(sql).entries.flatten.compact.map(&:to_sym)
end
execute_count(sql) click to toggle source
# File lib/databender/connection.rb, line 15
def execute_count(sql)
  @conn.execute(sql)
end
foreign_key_dependency_map_for(db_name) click to toggle source
# File lib/databender/connection.rb, line 36
def foreign_key_dependency_map_for(db_name)
  rows = @conn.execute(%[
                          SELECT table_name, column_name, referenced_table_name, referenced_column_name
                          FROM information_schema.key_column_usage
                          WHERE table_schema = '#{db_name}' AND referenced_table_name is not null
                          AND table_name != referenced_table_name
                          ORDER BY table_name;
                        ])
  rows.each_with_object({}) do |row, map|
    table, column, ref_table_name, ref_column_name = row
    parent = ForeignConstraint.new(table, column, ref_table_name, ref_column_name)
    map.has_key?(table) ? map[table] << parent : map[table] = [parent]
  end.symbolize_keys
end
tables_for(db_name) click to toggle source
# File lib/databender/connection.rb, line 19
def tables_for(db_name)
  execute(%[
              SELECT table_name
              FROM information_schema.tables
              WHERE table_schema = '#{db_name}' and table_type = 'BASE TABLE';
          ])
end