use connection_string as database configuration instead of a hash

This commit is contained in:
Brian J. Cardiff 2016-01-31 17:30:21 -03:00
parent 8c0313a306
commit a96776e336
6 changed files with 17 additions and 18 deletions

View File

@ -7,16 +7,15 @@ describe DB do
DB.driver_class("dummy").should eq(DummyDriver)
end
it "should instantiate driver with options" do
db = DB.open "dummy", {"host": "localhost", "port": "1027"}
it "should instantiate driver with connection_string" do
db = DB.open "dummy", "localhost:1027"
db.driver_class.should eq(DummyDriver)
db.options["host"].should eq("localhost")
db.options["port"].should eq("1027")
db.connection_string.should eq("localhost:1027")
end
it "should create a connection and close it" do
cnn = nil
DB.open "dummy", {"host": "localhost"} do |db|
DB.open "dummy", "localhost" do |db|
cnn = db.connection
end

View File

@ -2,7 +2,7 @@ require "spec"
class DummyDriver < DB::Driver
def build_connection
DummyConnection.new(options)
DummyConnection.new(connection_string)
end
class DummyConnection < DB::Connection
@ -152,7 +152,7 @@ def with_witness(count = 1)
end
def with_dummy
DB.open "dummy", {} of String => String do |db|
DB.open "dummy", "" do |db|
yield db
end
end

View File

@ -1,8 +1,8 @@
module DB
abstract class Connection
getter options
getter connection_string
def initialize(@options)
def initialize(@connection_string)
@closed = false
end

View File

@ -6,10 +6,10 @@ module DB
# It should be created from DB module. See `DB.open`.
class Database
getter driver_class
getter options
getter connection_string
def initialize(@driver_class, @options)
@driver = @driver_class.new(@options)
def initialize(@driver_class, @connection_string)
@driver = @driver_class.new(@connection_string)
@connection = @driver.build_connection
end

View File

@ -12,12 +12,12 @@ module DB
@@drivers.not_nil![name] = klass
end
def self.open(name, options)
Database.new(driver_class(name), options)
def self.open(name, connection_string)
Database.new(driver_class(name), connection_string)
end
def self.open(name, options, &block)
open(name, options).tap do |db|
def self.open(name, connection_string, &block)
open(name, connection_string).tap do |db|
yield db
db.close
end

View File

@ -1,8 +1,8 @@
module DB
abstract class Driver
getter options
getter connection_string
def initialize(@options)
def initialize(@connection_string : String)
end
abstract def build_connection : Connection