class DB::Client

Binds a connection pool to the specified adapter.

Attributes

adapter[R]

The adapter used for making connections. @attribute [Object]

Public Class Methods

new(adapter, **options) click to toggle source

Initialize the client and internal connection pool using the specified adapter. @parameter adapter [Object] The adapter instance.

# File lib/db/client.rb, line 16
def initialize(adapter, **options)
        @adapter = adapter
        
        @pool = connect(**options)
end

Public Instance Methods

close() click to toggle source

Close all open connections in the connection pool.

# File lib/db/client.rb, line 27
def close
        @pool.close
end
context(**options)
Alias for: session
session(**options) { |session| ... } click to toggle source

Acquires a connection and sends the specified statement if given. @parameters statement [String | Nil] An optional statement to send. @yields {|session| …} A connected session if a block is given. Implicitly closed.

@parameter session [Context::Session]

@returns [Context::Session] A connected session if no block is given.

# File lib/db/client.rb, line 36
def session(**options)
        session = Context::Session.new(@pool, **options)
        
        return session unless block_given?
        
        begin
                session.connect!
                
                yield session
        ensure
                session.close
        end
end
Also aliased as: context
transaction(**options) { |transaction| ... } click to toggle source

Acquires a connection and starts a transaction. @parameters statement [String | Nil] An optional statement to send. Defaults to ‘“BEGIN”`. @yields {|session| …} A connected session if a block is given. Implicitly commits, or aborts the connnection if an exception is raised.

@parameter session [Context::Transaction]

@returns [Context::Transaction] A connected and started transaction if no block is given.

# File lib/db/client.rb, line 57
def transaction(**options)
        transaction = Context::Transaction.new(@pool, **options)
        
        transaction.begin
        
        return transaction unless block_given?
        
        begin
                yield transaction
                
        rescue
                transaction.abort
                raise
        ensure
                transaction.commit?
        end
end

Protected Instance Methods

connect(**options) click to toggle source
# File lib/db/client.rb, line 77
def connect(**options)
        Async::Pool::Controller.new(@adapter, **options)
end