Class: DB::Model::Statement::Replace

Inherits:
Object
  • Object
show all
Defined in:
lib/db/model/statement/replace.rb

Instance Method Summary collapse

Constructor Details

#initialize(source, fields, values) ⇒ Replace



10
11
12
13
14
# File 'lib/db/model/statement/replace.rb', line 10

def initialize(source, fields, values)
  @source = source
  @fields = fields
  @values = values
end

Instance Method Details

#to_a(context, klass) ⇒ Object



32
33
34
35
36
37
38
39
40
41
# File 'lib/db/model/statement/replace.rb', line 32

def to_a(context, klass)
  to_sql(context).call do |connection|
    result = connection.next_result
    keys = result.field_names.map(&:to_sym)
    
    result.map do |row|
      klass.new(context, keys.zip(row).to_h)
    end
  end
end

#to_sql(context) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/db/model/statement/replace.rb', line 16

def to_sql(context)
  statement = context.query("REPLACE INTO")
  
  statement.identifier(@source.type)
  
  statement.clause("(")
  @fields.append_to(statement)
  statement.clause(") VALUES")
  
  @values.append_to(statement)
  
  statement.clause("RETURNING *")
  
  return statement
end