# frozen_string_literal: true class TaskExecutionContext attr_reader :resource_type, :resource_ids, :job, :worker def initialize(resource_type, resource_ids, job, worker) @resource_type = resource_type @resource_ids = resource_ids @job = job @worker = worker end delegate :set_progress_total!, :increment_progress!, :set_progress!, :succeed!, :fail!, to: :worker def attach_file!(path, filename:, description: nil) file = File.open(path) @job.files.attach( io: file, filename: filename, metadata: { description: description } ) ensure file&.close end def resources @resources ||= @resource_type.constantize.where(id: @resource_ids) end def each_resource(&block) resources.find_each do |resource| yield resource worker.increment_progress! end end def find_resource(id) resources.find(id) end def resource_count @resource_ids.count end def job_id @job.id end def job_resources @job.background_job_resources end end