Class: Micdrop::Ext::Sequel::UpdateSink

Inherits:
Object
  • Object
show all
Defined in:
lib/micdrop/ext/sequel.rb

Overview

A sink which will always issue an update statement

Instance Method Summary collapse

Constructor Details

#initialize(dataset, key_columns) ⇒ UpdateSink

Returns a new instance of UpdateSink.



25
26
27
28
29
30
31
32
33
# File 'lib/micdrop/ext/sequel.rb', line 25

def initialize(dataset, key_columns)
  @dataset = dataset
  @key_columns = if key_columns.is_a? Symbol
                   [key_columns]
                 elsif key_columns.respond_to? :each
                   key_columns
                   # TODO: else throw error
                 end
end

Instance Method Details

#<<(collector) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/micdrop/ext/sequel.rb', line 35

def <<(collector)
  dataset = @dataset
  @key_columns.each do |col|
    dataset = dataset.where(**{ col => collector[col] })
  end
  dataset.update(**collector)
end