Class: Janko::Upsert

Inherits:
Object
  • Object
show all
Includes:
Agrippa::Mutable
Defined in:
lib/janko/upsert.rb

Overview

Instance Method Summary collapse

Instance Method Details

#cleanupObject



43
44
45
46
47
48
# File 'lib/janko/upsert.rb', line 43

def cleanup
    return unless prepared?
    connection.exec("DEALLOCATE \"#{@prepared}\"")
    @prepared = nil
    self
end

#default_stateObject



13
14
15
# File 'lib/janko/upsert.rb', line 13

def default_state
    { collector: MergeResult.new }
end

#prepareObject



21
22
23
24
25
26
# File 'lib/janko/upsert.rb', line 21

def prepare
    return(self) if prepared?
    @prepared = "upsert_#{SecureRandom.hex(8)}"
    connection.prepare(@prepared, query)
    self
end

#processObject

Raises:

  • (RuntimeError)


35
36
37
38
39
40
41
# File 'lib/janko/upsert.rb', line 35

def process
    raise(RuntimeError, "Can't #process without from_table") \
        unless read_from_table?
    result.clear
    collect_result(exec_query)
    self
end

#push(*values) ⇒ Object

Raises:

  • (RuntimeError)


28
29
30
31
32
33
# File 'lib/janko/upsert.rb', line 28

def push(*values)
    raise(RuntimeError, "Can't #push when reading from a table.") \
        if read_from_table?
    collect_result(exec_query(columns.pack(*values)))
    self
end

#resultObject



17
18
19
# File 'lib/janko/upsert.rb', line 17

def result
    collector
end