Class: SqlPartitioner::ARAdapter

Inherits:
BaseAdapter show all
Defined in:
lib/sql_partitioner/adapters/ar_adapter.rb

Overview

Adapter wrapping an Active Record Connection

Instance Method Summary collapse

Constructor Details

#initialize(connection) ⇒ ARAdapter

Returns a new instance of ARAdapter.



8
9
10
# File 'lib/sql_partitioner/adapters/ar_adapter.rb', line 8

def initialize(connection)
  @connection = connection
end

Instance Method Details

#execute(*args) ⇒ Object



29
30
31
32
# File 'lib/sql_partitioner/adapters/ar_adapter.rb', line 29

def execute(*args)
  sanitized_sql = ActiveRecord::Base.send(:sanitize_sql_array, args)
  @connection.execute(sanitized_sql)
end

#schema_nameObject



34
35
36
# File 'lib/sql_partitioner/adapters/ar_adapter.rb', line 34

def schema_name
  @connection.current_database 
end

#select(*args) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/sql_partitioner/adapters/ar_adapter.rb', line 12

def select(*args)
  result = []
  strukt = nil
  
  sanitized_sql = ActiveRecord::Base.send(:sanitize_sql_array, args)
  conn_result = @connection.send(:select, sanitized_sql)
  conn_result.each do |h|
    if h.keys.size == 1
      result << h.values.first
    else
      strukt ||= Struct.new(*h.keys.map{ |k| k.downcase.to_sym})
      result << strukt.new(*h.values)
    end
  end
  result
end