class Janko::BulkMerge
Public Class Methods
new(options = {})
click to toggle source
# File lib/janko/bulk_merge.rb, line 7 def initialize(options = {}) @options = options @target = "merge_#{SecureRandom.hex(8)}" @upsert = Upsert.new(options.merge(from_table: @target)) @importer = Import.new(strategy: Janko::CopyImporter, table: @target, connection: connection, columns: options[:columns]) end
Public Instance Methods
connection()
click to toggle source
# File lib/janko/bulk_merge.rb, line 38 def connection @options[:connection] end
push(*values)
click to toggle source
# File lib/janko/bulk_merge.rb, line 22 def push(*values) @importer.push(*values) self end
result()
click to toggle source
# File lib/janko/bulk_merge.rb, line 34 def result @upsert.result end
start()
click to toggle source
# File lib/janko/bulk_merge.rb, line 16 def start create_copy_target @importer.start self end
stop()
click to toggle source
# File lib/janko/bulk_merge.rb, line 27 def stop @importer.stop @upsert.process.cleanup drop_copy_target self end
Private Instance Methods
create_copy_target()
click to toggle source
# File lib/janko/bulk_merge.rb, line 44 def create_copy_target connection.exec(<<-END) CREATE TEMP TABLE #{@target} WITHOUT OIDS ON COMMIT DROP AS (SELECT * FROM #{@options[:table]}) WITH NO DATA; END self end
drop_copy_target()
click to toggle source
# File lib/janko/bulk_merge.rb, line 52 def drop_copy_target connection.exec("DROP TABLE #{@target}") self end