class Kibutsu::DatabaseConnection

Only class that directly interacts with Sequel. Used for retrieving data from the database and inserting fixtures into it.

Attributes

connection[R]

Public Class Methods

new(connection_string) click to toggle source
# File lib/kibutsu/database_connection.rb, line 9
def initialize(connection_string)
  @connection = Sequel.connect(connection_string)
end

Public Instance Methods

column_names(table_name) click to toggle source
# File lib/kibutsu/database_connection.rb, line 20
def column_names(table_name)
  connection.schema(table_name.to_s).map(&:first)
end
disconnect() click to toggle source
# File lib/kibutsu/database_connection.rb, line 38
def disconnect
  connection.disconnect
end
foreign_key_columns(table_name) click to toggle source
# File lib/kibutsu/database_connection.rb, line 24
def foreign_key_columns(table_name)
  connection.foreign_key_list(table_name.to_s).map do |foreign_key_info|
    ForeignKeyColumn.new(
      FixtureWorld.instance.find_table(table_name.to_s),
      foreign_key_info[:columns].first.to_s,
      FixtureWorld.instance.find_table(foreign_key_info[:table].to_s)
    )
  end
end
insert_fixture_tables(fixture_tables) click to toggle source
# File lib/kibutsu/database_connection.rb, line 13
def insert_fixture_tables(fixture_tables)
  fixture_tables.each do |fixture_table|
    insert_table(fixture_table)
    insert_fixture_tables(fixture_table.foreign_key_source_tables)
  end
end
table_names() click to toggle source
# File lib/kibutsu/database_connection.rb, line 34
def table_names
  connection.tables
end

Private Instance Methods

insert_fixture(fixture) click to toggle source
# File lib/kibutsu/database_connection.rb, line 54
def insert_fixture(fixture)
  fixture_table = fixture.table
  attributes = fixture.enriched_attributes
  connection[fixture_table.name.to_sym].insert(attributes)
end
insert_table(fixture_table) click to toggle source
# File lib/kibutsu/database_connection.rb, line 46
def insert_table(fixture_table)
  connection[fixture_table.name.to_sym].delete

  fixture_table.fixtures.each do |fixture|
    insert_fixture(fixture)
  end
end