2025-07-28 16:30:36 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
|
|
# Entry point job for parallel track generation
|
|
|
|
|
# Coordinates the entire parallel processing workflow
|
|
|
|
|
class Tracks::ParallelGeneratorJob < ApplicationJob
|
|
|
|
|
queue_as :tracks
|
|
|
|
|
|
|
|
|
|
def perform(user_id, start_at: nil, end_at: nil, mode: :bulk, chunk_size: 1.day)
|
|
|
|
|
user = User.find(user_id)
|
|
|
|
|
|
2025-09-08 14:46:30 -04:00
|
|
|
Tracks::ParallelGenerator.new(
|
2025-07-28 16:30:36 -04:00
|
|
|
user,
|
|
|
|
|
start_at: start_at,
|
|
|
|
|
end_at: end_at,
|
|
|
|
|
mode: mode,
|
|
|
|
|
chunk_size: chunk_size
|
|
|
|
|
).call
|
|
|
|
|
rescue StandardError => e
|
|
|
|
|
ExceptionReporter.call(e, 'Failed to start parallel track generation')
|
|
|
|
|
end
|
2025-08-29 07:59:46 -04:00
|
|
|
end
|