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

Returns a new instance of Replace.



27
28
29
30
31
# File 'lib/db/model/statement/replace.rb', line 27

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

Instance Method Details

#to_a(context, klass) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/db/model/statement/replace.rb', line 49

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



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/db/model/statement/replace.rb', line 33

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