Class: Polo::SqlTranslator

Inherits:
Object
  • Object
show all
Includes:
ActiveRecordFourOrGreater, ActiveRecordLessThanFour
Defined in:
lib/polo/sql_translator.rb

Defined Under Namespace

Modules: ActiveRecordFourOrGreater, ActiveRecordLessThanFour

Instance Method Summary collapse

Methods included from ActiveRecordFourOrGreater

#insert_values

Methods included from ActiveRecordLessThanFour

#insert_values

Constructor Details

#initialize(object, configuration = Configuration.new) ⇒ SqlTranslator

Returns a new instance of SqlTranslator.



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/polo/sql_translator.rb', line 9

def initialize(object, configuration = Configuration.new)
  @record = object
  @configuration = configuration

  case @configuration.adapter
  when :mysql
    @adapter = Polo::Adapters::MySQL.new
  when :postgres
    @adapter = Polo::Adapters::Postgres.new
  else
    raise "Unknown SQL adapter: #{@configuration.adapter}"
  end
end

Instance Method Details

#insertsObject



37
38
39
40
41
# File 'lib/polo/sql_translator.rb', line 37

def inserts
  records.map do |record|
    raw_sql(record)
  end
end

#recordsObject



33
34
35
# File 'lib/polo/sql_translator.rb', line 33

def records
  Array.wrap(@record)
end

#to_sqlObject



23
24
25
26
27
28
29
30
31
# File 'lib/polo/sql_translator.rb', line 23

def to_sql
  case @configuration.on_duplicate_strategy
  when :ignore
    @adapter.ignore_transform(inserts, records)
  when :override
    @adapter.on_duplicate_key_update(inserts, records)
  else inserts
  end
end