Class: Hanami::Model::Migrator::Connection Private
- Inherits:
-
Object
- Object
- Hanami::Model::Migrator::Connection
- Defined in:
- lib/hanami/model/migrator/connection.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Sequel connection wrapper
Normalize external adapters interfaces
Instance Method Summary collapse
-
#database ⇒ Object
private
Returns DB name from conenction.
-
#database_type ⇒ Object
private
Returns DB type.
-
#global_uri ⇒ Object
private
Returns DB connection wihout specifying database name.
-
#host ⇒ Object
private
Returns DB connection host.
-
#initialize(configuration) ⇒ Connection
constructor
private
A new instance of Connection.
-
#jdbc? ⇒ Boolean
private
Returns a boolean telling if a DB connection is from JDBC or not.
-
#parsed_uri ⇒ Object
private
Returns database connection URI instance without JDBC namespace.
-
#password ⇒ Object
private
Returns user from DB connection.
-
#port ⇒ Object
private
Returns DB connection port.
- #raw ⇒ Object private
- #schema ⇒ Object private
-
#table(name) ⇒ Object
private
Return the database table for the given name.
-
#uri ⇒ Object
private
Returns DB connection URI directly from adapter.
-
#user ⇒ Object
private
Returns user from DB connection.
Constructor Details
#initialize(configuration) ⇒ Connection
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Connection.
13 14 15 |
# File 'lib/hanami/model/migrator/connection.rb', line 13 def initialize(configuration) @configuration = configuration end |
Instance Method Details
#database ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns DB name from conenction
Even when adapter doesn’t provide it explicitly it tries to parse
56 57 58 |
# File 'lib/hanami/model/migrator/connection.rb', line 56 def database @database ||= parsed_uri.path[1..-1] end |
#database_type ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns DB type
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/hanami/model/migrator/connection.rb', line 68 def database_type case uri when /sqlite/ :sqlite when /postgres/ :postgres when /mysql/ :mysql end end |
#global_uri ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns DB connection wihout specifying database name
111 112 113 |
# File 'lib/hanami/model/migrator/connection.rb', line 111 def global_uri uri.sub(parsed_uri.select(:path).first, '') end |
#host ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns DB connection host
Even when adapter doesn’t provide it explicitly it tries to parse
36 37 38 |
# File 'lib/hanami/model/migrator/connection.rb', line 36 def host @host ||= parsed_uri.host || parsed_opt('host') end |
#jdbc? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a boolean telling if a DB connection is from JDBC or not
119 120 121 |
# File 'lib/hanami/model/migrator/connection.rb', line 119 def jdbc? !uri.scan('jdbc:').empty? end |
#parsed_uri ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns database connection URI instance without JDBC namespace
127 128 129 |
# File 'lib/hanami/model/migrator/connection.rb', line 127 def parsed_uri @parsed_uri ||= URI.parse(uri.sub('jdbc:', '')) end |
#password ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns user from DB connection
Even when adapter doesn’t provide it explicitly it tries to parse
95 96 97 |
# File 'lib/hanami/model/migrator/connection.rb', line 95 def password @password ||= parsed_opt('password') || parsed_uri.password end |
#port ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns DB connection port
Even when adapter doesn’t provide it explicitly it tries to parse
46 47 48 |
# File 'lib/hanami/model/migrator/connection.rb', line 46 def port @port ||= parsed_uri.port || parsed_opt('port').to_i.nonzero? end |
#raw ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/hanami/model/migrator/connection.rb', line 19 def raw @raw ||= begin Sequel.connect( configuration.url, loggers: [configuration.migrations_logger] ) rescue Sequel::AdapterNotFound raise MigrationError.new("Current adapter (#{configuration.adapter.type}) doesn't support SQL database operations.") end end |
#schema ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
132 133 134 |
# File 'lib/hanami/model/migrator/connection.rb', line 132 def schema configuration.schema end |
#table(name) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return the database table for the given name
140 141 142 |
# File 'lib/hanami/model/migrator/connection.rb', line 140 def table(name) raw[name] if raw.tables.include?(name) end |
#uri ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns DB connection URI directly from adapter
103 104 105 |
# File 'lib/hanami/model/migrator/connection.rb', line 103 def uri @configuration.url end |
#user ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns user from DB connection
Even when adapter doesn’t provide it explicitly it tries to parse
85 86 87 |
# File 'lib/hanami/model/migrator/connection.rb', line 85 def user @user ||= parsed_opt('user') || parsed_uri.user end |