Class: ROM::SQL::Gateway
- Inherits:
-
Gateway
- Object
- Gateway
- ROM::SQL::Gateway
- Includes:
- Dry::Core::Constants, Migration
- Defined in:
- lib/rom/sql/gateway.rb
Overview
SQL gateway
Constant Summary collapse
- CONNECTION_EXTENSIONS =
{ postgres: %i(pg_array pg_json pg_enum) }.freeze
Instance Attribute Summary collapse
- #logger ⇒ Object readonly
- #options ⇒ Object readonly
Attributes included from Migration
Instance Method Summary collapse
-
#[](name) ⇒ Dataset
Return dataset with the given name.
-
#call(function, *args) ⇒ Object
Call a SQL function.
-
#create_table(*args, &block) ⇒ Object
Create a table using the configured connection.
-
#database_type ⇒ Symbol
Underlying database type.
-
#dataset(name) ⇒ Dataset
Return dataset with the given name.
-
#dataset?(name) ⇒ Boolean
Check if a dataset exists.
-
#disconnect ⇒ Object
Disconnect from the gateway’s database.
-
#drop_table(*args, &block) ⇒ Object
Drops a table.
-
#initialize(uri, options = EMPTY_HASH) ⇒ SQL::Gateway
constructor
Initialize an SQL gateway.
-
#run(statement) ⇒ Object
Execute a statement.
-
#schema ⇒ Array
Returns a list of datasets inferred from table names.
-
#use_logger(logger) ⇒ Object
Setup a logger.
Methods included from Migration
#auto_migrate!, included, #migration, #pending_migrations?, #run_migrations
Constructor Details
#initialize(uri) ⇒ SQL::Gateway #initialize(uri, options) ⇒ SQL::Gateway #initialize(connection) ⇒ SQL::Gateway
Initialize an SQL gateway
Gateways are typically initialized via ROM::Configuration object, gateway constructor arguments such as URI and options are passed directly to this constructor
79 80 81 82 83 84 85 86 |
# File 'lib/rom/sql/gateway.rb', line 79 def initialize(uri, = EMPTY_HASH) @connection = connect(uri, ) load_extensions(Array([:extensions])) @options = super end |
Instance Attribute Details
#logger ⇒ Object (readonly)
29 30 31 |
# File 'lib/rom/sql/gateway.rb', line 29 def logger @logger end |
#options ⇒ Object (readonly)
33 34 35 |
# File 'lib/rom/sql/gateway.rb', line 33 def @options end |
Instance Method Details
#[](name) ⇒ Dataset
Return dataset with the given name
This returns a raw Sequel database
104 105 106 |
# File 'lib/rom/sql/gateway.rb', line 104 def [](name) connection[name] end |
#call(function, *args) ⇒ Object
Call a SQL function
192 193 194 |
# File 'lib/rom/sql/gateway.rb', line 192 def call(function, *args) connection[Sequel.function(function, *args)].first.values.first end |
#create_table(*args, &block) ⇒ Object
Create a table using the configured connection
152 153 154 |
# File 'lib/rom/sql/gateway.rb', line 152 def create_table(*args, &block) connection.create_table(*args, &block) end |
#database_type ⇒ Symbol
Underlying database type
177 178 179 |
# File 'lib/rom/sql/gateway.rb', line 177 def database_type @database_type ||= connection.database_type.to_sym end |
#dataset(name) ⇒ Dataset
Return dataset with the given name
136 137 138 |
# File 'lib/rom/sql/gateway.rb', line 136 def dataset(name) connection[name] end |
#dataset?(name) ⇒ Boolean
Check if a dataset exists
145 146 147 |
# File 'lib/rom/sql/gateway.rb', line 145 def dataset?(name) schema.include?(name) end |
#disconnect ⇒ Object
Disconnect from the gateway’s database
91 92 93 |
# File 'lib/rom/sql/gateway.rb', line 91 def disconnect connection.disconnect end |
#drop_table(*args, &block) ⇒ Object
Drops a table
159 160 161 |
# File 'lib/rom/sql/gateway.rb', line 159 def drop_table(*args, &block) connection.drop_table(*args, &block) end |
#run(statement) ⇒ Object
Execute a statement
201 202 203 |
# File 'lib/rom/sql/gateway.rb', line 201 def run(statement) connection.run(statement) end |
#schema ⇒ Array
Returns a list of datasets inferred from table names
168 169 170 |
# File 'lib/rom/sql/gateway.rb', line 168 def schema @schema ||= connection.tables end |
#use_logger(logger) ⇒ Object
Setup a logger
124 125 126 127 |
# File 'lib/rom/sql/gateway.rb', line 124 def use_logger(logger) @logger = logger connection.loggers << logger end |