Class: ROM::SQL::Gateway
- Inherits:
-
Gateway
- Object
- Gateway
- ROM::SQL::Gateway
- Includes:
- Options, Migration
- Defined in:
- lib/rom/sql/gateway.rb
Overview
SQL gateway
Constant Summary collapse
- CONNECTION_EXTENSIONS =
{ postgres: %i(pg_array pg_json) }.freeze
Class Attribute Summary collapse
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Return optionally configured logger.
Instance Method Summary collapse
-
#[](name) ⇒ Dataset
Return dataset with the given name.
-
#create_table(*args, &block) ⇒ Object
Create a table using the configured connection.
-
#dataset(name) ⇒ Dataset
Return dataset with the given name.
-
#dataset?(name) ⇒ Boolean
Check if dataset exists.
-
#disconnect ⇒ Object
Disconnect from database.
-
#drop_table(*args, &block) ⇒ Object
Drops a table.
-
#extend_command_class(klass, dataset) ⇒ Object
Extend database-specific behavior.
-
#initialize(uri, options = {}) ⇒ Gateway
constructor
SQL gateway interface.
-
#schema ⇒ Array
Returns a list of datasets inferred from table names.
-
#use_logger(logger) ⇒ Object
Setup a logger.
Methods included from Migration
create, included, #migration, #pending_migrations?, run, #run_migrations
Constructor Details
#connect(uri, options) ⇒ Gateway #connect(connection) ⇒ Gateway
SQL gateway interface
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rom/sql/gateway.rb', line 58 def initialize(uri, = {}) = self.class.option_definitions.names = .reject { |k, _| .include?(k) } @connection = connect(uri, ) load_extensions(Array([:extensions])) super(uri, .reject { |k, _| .keys.include?(k) }) self.class.instance = self end |
Class Attribute Details
.instance ⇒ Object
23 24 25 |
# File 'lib/rom/sql/gateway.rb', line 23 def instance @instance end |
Instance Attribute Details
#logger ⇒ Object (readonly)
Return optionally configured logger
35 36 37 |
# File 'lib/rom/sql/gateway.rb', line 35 def logger @logger end |
Instance Method Details
#[](name) ⇒ Dataset
Return dataset with the given name
84 85 86 |
# File 'lib/rom/sql/gateway.rb', line 84 def [](name) connection[name] end |
#create_table(*args, &block) ⇒ Object
Create a table using the configured connection
148 149 150 |
# File 'lib/rom/sql/gateway.rb', line 148 def create_table(*args, &block) connection.create_table(*args, &block) end |
#dataset(name) ⇒ Dataset
Return dataset with the given name
107 108 109 |
# File 'lib/rom/sql/gateway.rb', line 107 def dataset(name) connection[name] end |
#dataset?(name) ⇒ Boolean
Check if dataset exists
116 117 118 |
# File 'lib/rom/sql/gateway.rb', line 116 def dataset?(name) schema.include?(name) end |
#disconnect ⇒ Object
Disconnect from database
73 74 75 |
# File 'lib/rom/sql/gateway.rb', line 73 def disconnect connection.disconnect end |
#drop_table(*args, &block) ⇒ Object
Drops a table
155 156 157 |
# File 'lib/rom/sql/gateway.rb', line 155 def drop_table(*args, &block) connection.drop_table(*args, &block) end |
#extend_command_class(klass, dataset) ⇒ Object
Extend database-specific behavior
Note: Currently, only postgres is supported.
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/rom/sql/gateway.rb', line 128 def extend_command_class(klass, dataset) type = dataset.db.database_type if type == :postgres ext = if klass < Commands::Create Commands::Postgres::Create elsif klass < Commands::Update Commands::Postgres::Update end klass.send(:include, ext) if ext end klass end |
#schema ⇒ Array
Returns a list of datasets inferred from table names
164 165 166 |
# File 'lib/rom/sql/gateway.rb', line 164 def schema @schema ||= connection.tables end |
#use_logger(logger) ⇒ Object
Setup a logger
95 96 97 98 |
# File 'lib/rom/sql/gateway.rb', line 95 def use_logger(logger) @logger = logger connection.loggers << logger end |