Class: Rooq::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/rooq/configuration.rb

Overview

Configuration holds all settings for a Rooq context. Configurations are immutable - use #derive to create modified copies.

Inspired by jOOQ's Configuration class.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection_provider: nil, dialect: nil) ⇒ Configuration

Create a new configuration.

Parameters:



15
16
17
18
19
# File 'lib/rooq/configuration.rb', line 15

def initialize(connection_provider: nil, dialect: nil)
  @connection_provider = connection_provider
  @dialect = dialect || Dialect::PostgreSQL.new
  freeze
end

Instance Attribute Details

#connection_providerObject (readonly)

Returns the value of attribute connection_provider.



10
11
12
# File 'lib/rooq/configuration.rb', line 10

def connection_provider
  @connection_provider
end

#dialectObject (readonly)

Returns the value of attribute dialect.



10
11
12
# File 'lib/rooq/configuration.rb', line 10

def dialect
  @dialect
end

Class Method Details

.from_connection(connection, dialect: nil) ⇒ Configuration

Create a new configuration from a single connection. The connection lifecycle is managed externally.

Parameters:

  • connection (Object)

    a database connection

  • dialect (Dialect::Base) (defaults to: nil)

    the SQL dialect

Returns:



26
27
28
29
30
31
# File 'lib/rooq/configuration.rb', line 26

def self.from_connection(connection, dialect: nil)
  new(
    connection_provider: DefaultConnectionProvider.new(connection),
    dialect: dialect
  )
end

.from_pool(pool, dialect: nil) ⇒ Configuration

Create a new configuration from a connection pool. Connections are acquired and released per query.

Parameters:

Returns:



38
39
40
41
42
43
# File 'lib/rooq/configuration.rb', line 38

def self.from_pool(pool, dialect: nil)
  new(
    connection_provider: PooledConnectionProvider.new(pool),
    dialect: dialect
  )
end

Instance Method Details

#derive(connection_provider: nil, dialect: nil) ⇒ Configuration

Create a derived configuration with some settings overridden.

Parameters:

  • connection_provider (ConnectionProvider) (defaults to: nil)

    new connection provider (optional)

  • dialect (Dialect::Base) (defaults to: nil)

    new dialect (optional)

Returns:



49
50
51
52
53
54
# File 'lib/rooq/configuration.rb', line 49

def derive(connection_provider: nil, dialect: nil)
  Configuration.new(
    connection_provider: connection_provider || @connection_provider,
    dialect: dialect || @dialect
  )
end