Class: SqlGenius::Core::Connection::ActiveRecordAdapter
- Inherits:
-
Object
- Object
- SqlGenius::Core::Connection::ActiveRecordAdapter
- Defined in:
- lib/sql_genius/core/connection/active_record_adapter.rb
Overview
Wraps an ActiveRecord::Base.connection and implements the Core::Connection contract.
Instance Method Summary collapse
- #close ⇒ Object
- #columns_for(table) ⇒ Object
- #current_database ⇒ Object
- #exec_query(sql, binds: []) ⇒ Object
- #indexes_for(table) ⇒ Object
-
#initialize(ar_connection) ⇒ ActiveRecordAdapter
constructor
A new instance of ActiveRecordAdapter.
- #primary_key(table) ⇒ Object
- #quote(value) ⇒ Object
- #quote_table_name(name) ⇒ Object
- #select_value(sql) ⇒ Object
- #server_version ⇒ Object
- #tables ⇒ Object
Constructor Details
#initialize(ar_connection) ⇒ ActiveRecordAdapter
Returns a new instance of ActiveRecordAdapter.
11 12 13 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 11 def initialize(ar_connection) @ar = ar_connection end |
Instance Method Details
#close ⇒ Object
69 70 71 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 69 def close nil end |
#columns_for(table) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 45 def columns_for(table) pk = @ar.primary_key(table) @ar.columns(table).map do |c| Core::ColumnDefinition.new( name: c.name, type: c.type, sql_type: c.sql_type, null: c.null, default: c.default, primary_key: c.name == pk, ) end end |
#current_database ⇒ Object
29 30 31 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 29 def current_database @ar.current_database end |
#exec_query(sql, binds: []) ⇒ Object
15 16 17 18 19 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 15 def exec_query(sql, binds: []) _ = binds ar_result = @ar.exec_query(sql) Core::Result.new(columns: ar_result.columns, rows: ar_result.rows) end |
#indexes_for(table) ⇒ Object
59 60 61 62 63 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 59 def indexes_for(table) @ar.indexes(table).map do |idx| Core::IndexDefinition.new(name: idx.name, columns: idx.columns, unique: idx.unique) end end |
#primary_key(table) ⇒ Object
65 66 67 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 65 def primary_key(table) @ar.primary_key(table) end |
#quote(value) ⇒ Object
33 34 35 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 33 def quote(value) @ar.quote(value) end |
#quote_table_name(name) ⇒ Object
37 38 39 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 37 def quote_table_name(name) @ar.quote_table_name(name) end |
#select_value(sql) ⇒ Object
21 22 23 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 21 def select_value(sql) @ar.select_value(sql) end |
#server_version ⇒ Object
25 26 27 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 25 def server_version @server_version ||= Core::ServerInfo.parse(@ar.select_value("SELECT VERSION()").to_s) end |
#tables ⇒ Object
41 42 43 |
# File 'lib/sql_genius/core/connection/active_record_adapter.rb', line 41 def tables @ar.tables end |