class DataStore::Connector

Public Instance Methods

create_table!() click to toggle source

Create the data_stores table with the following attributes

  • primary_key :id

  • Integer :identifier, unique: true, null: false

  • String :name, null: false

  • String :type, null: false

  • String :description

  • DateTime :created_at

  • DateTime :updated_at

# File lib/data_store/connector.rb, line 15
def create_table!
  DataStore.create_data_stores.apply(database, :up)
rescue Sequel::DatabaseError => e
  raise e if e.message.include?('FATAL')
end
database() click to toggle source

Return the database object to which its connected.

# File lib/data_store/connector.rb, line 37
def database
  @database ||= begin
    if ENV['DATABASE_URL']
      Sequel.connect(ENV['DATABASE_URL'])
    elsif RUBY_PLATFORM == 'java'
      Sequel.connect(jdbc_settings)
    else
      Sequel.connect(database_settings)
    end
  end
end
dataset() click to toggle source

Return the dataset associated with data_stores

# File lib/data_store/connector.rb, line 29
def dataset
  @dataset ||= begin
    create_table!
    database[:data_stores]
  end
end
reset!() click to toggle source

Drop data_stores table and recreate it

# File lib/data_store/connector.rb, line 22
def reset!
  drop_table!
  create_table!
  disconnect
end

Private Instance Methods

database_settings() click to toggle source
# File lib/data_store/connector.rb, line 80
def database_settings
  config_file = DataStore.configuration.database_config_file
  settings = YAML.load(File.open(config_file))[DataStore.configuration.database.to_s]
  settings['adapter'] = 'postgres' if settings['adapter'] == 'postgresql'
  settings
end
disconnect() click to toggle source
# File lib/data_store/connector.rb, line 69
def disconnect
  database.disconnect
  @database = nil
end
drop_table!() click to toggle source
# File lib/data_store/connector.rb, line 74
def drop_table!
  DataStore.create_data_stores.apply(database, :down)
rescue Sequel::DatabaseError => e
  raise e if e.message.include?('FATAL')
end
jdbc_settings() click to toggle source
# File lib/data_store/connector.rb, line 51
def jdbc_settings
  settings = database_settings
  db =  case settings['adapter']
        when 'postgres'
          'postgresql'
        when 'mysql2'
          'mysql'
        else
          settings['adapter']
        end
  if db == 'sqlite'
    uri = "jdbc:#{db}:#{settings['database']}"
  else
    uri = "jdbc:#{db}://#{settings['host']}/#{settings['database']}?user=#{settings['username']}"
  end
  settings['password'] ? uri + "&password=#{settings['password']}" : uri
end