global

def update_activity(account_id, *columns)

def update_activity(account_id, *columns)
  ds = account_activity_ds(account_id)
  hash = {}
  columns.each do |c|
    hash[c] = Sequel::CURRENT_TIMESTAMP
  end
  if ds.update(hash) == 0
    hash[account_activity_id_column] = account_id
    hash[account_activity_last_activity_column] ||= Sequel::CURRENT_TIMESTAMP
    hash[account_activity_last_login_column] ||= Sequel::CURRENT_TIMESTAMP
    # It is safe to ignore uniqueness violations here, as a concurrent insert would also use current timestamps.
    ignore_uniqueness_violation{ds.insert(hash)}
  end
end