# frozen_string_literal: true

class Points::CreateJob < ApplicationJob
  queue_as :points

  def perform(params, user_id)
    data = Points::Params.new(params, user_id).call

    data.each_slice(1000) do |location_batch|
      Point.upsert_all(
        location_batch,
        unique_by: %i[lonlat timestamp user_id],
        returning: false
      )
    end
  end
end
