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