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