module ReeDao::DatasetExtensions::InstanceMethods

def put_with_conflict(entity, conflict_opts = {})

def put_with_conflict(entity, conflict_opts = {})
  raw = opts[:schema_mapper].db_dump(entity)
  remove_null_primary_key(raw)
  if conflict_opts.key?(:update) && conflict_opts[:update].empty?
    conflict_opts.delete(:update)
  elsif conflict_opts[:update].is_a?(Array)
    update = {}
    conflict_opts[:update].each do |column|
      update[column] = raw[column]
    end
    conflict_opts[:update] = update
  end
  key = insert_conflict(conflict_opts).insert(raw)
  set_entity_primary_key(entity, raw, key)
  set_persistence_state(entity, raw)
  where(primary_key => key).first
end