class Metacrunch::DB::Destination

Constants

DEFAULT_OPTIONS

Public Class Methods

new(sequel_dataset, options = {}) click to toggle source
# File lib/metacrunch/db/destination.rb, line 12
def initialize(sequel_dataset, options = {})
  @dataset = sequel_dataset
  @options = DEFAULT_OPTIONS.merge(options)
end

Public Instance Methods

close() click to toggle source
# File lib/metacrunch/db/destination.rb, line 29
def close
  @dataset.db.disconnect
end
write(data) click to toggle source
# File lib/metacrunch/db/destination.rb, line 17
def write(data)
  return if data.blank?

  @dataset.db.transaction(@options[:transaction_options]) do
    if data.is_a?(Array)
      data.each{|d| insert_or_upsert(d) }
    else
      insert_or_upsert(data)
    end
  end
end

Private Instance Methods

insert(data) click to toggle source
# File lib/metacrunch/db/destination.rb, line 39
def insert(data)
  @dataset.insert(data)
end
insert_or_upsert(data) click to toggle source
# File lib/metacrunch/db/destination.rb, line 35
def insert_or_upsert(data)
  @options[:use_upsert] ? upsert(data) : insert(data)
end
upsert(data) click to toggle source
# File lib/metacrunch/db/destination.rb, line 43
def upsert(data)
  if data
    primary_key = @options[:primary_key]

    rec = @dataset.where(primary_key => data[primary_key])
    if 1 != rec.update(data)
      insert(data)
    end
  end
end