dawarich/app/jobs/incremental_track_generator_job.rb

31 lines
931 B
Ruby
Raw Normal View History

2025-07-07 12:59:42 -04:00
# frozen_string_literal: true
class IncrementalTrackGeneratorJob < ApplicationJob
queue_as :default
sidekiq_options retry: 3
def perform(user_id, day = nil, grace_period_minutes = 5)
2025-07-07 15:48:07 -04:00
user = User.find(user_id)
day = day ? Date.parse(day.to_s) : Date.current
2025-07-07 12:59:42 -04:00
2025-07-07 15:48:07 -04:00
Rails.logger.info "Starting incremental track generation for user #{user.id}, day #{day}"
2025-07-07 12:59:42 -04:00
2025-07-07 15:48:07 -04:00
generator(user, day, grace_period_minutes).call
2025-07-07 12:59:42 -04:00
rescue StandardError => e
ExceptionReporter.call(e, 'Incremental track generation failed')
2025-07-07 15:48:07 -04:00
2025-07-07 12:59:42 -04:00
raise e
end
private
2025-07-07 15:48:07 -04:00
def generator(user, day, grace_period_minutes)
@generator ||= Tracks::Generator.new(
user,
point_loader: Tracks::PointLoaders::IncrementalLoader.new(user, day),
incomplete_segment_handler: Tracks::IncompleteSegmentHandlers::BufferHandler.new(user, day, grace_period_minutes),
track_cleaner: Tracks::TrackCleaners::NoOpCleaner.new(user)
)
2025-07-07 12:59:42 -04:00
end
end