dawarich/app/jobs/visit_suggesting_job.rb
2025-06-09 13:39:25 +02:00

28 lines
741 B
Ruby

# frozen_string_literal: true
class VisitSuggestingJob < ApplicationJob
queue_as :visit_suggesting
sidekiq_options retry: false
# Passing timespan of more than 3 years somehow results in duplicated Places
def perform(user_id:, start_at:, end_at:)
user = User.find(user_id)
start_time = parse_date(start_at)
end_time = parse_date(end_at)
# Create one-day chunks
current_time = start_time
while current_time < end_time
chunk_end = [current_time + 1.day, end_time].min
Visits::Suggest.new(user, start_at: current_time, end_at: chunk_end).call
current_time += 1.day
end
end
private
def parse_date(date)
date.is_a?(String) ? Time.zone.parse(date) : date.to_datetime
end
end