Class: SurveyCheckWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::IterableJob, Sidekiq::Job
Defined in:
app/workers/survey_check_worker.rb

Overview

Removes empty survey enrollments — those whose customer topics have no topic
responses. Scheduled via config/sidekiq_production_schedule.yml.

Uses Sidekiq::IterableJob so a mid-run deploy or worker restart resumes from
the cursor instead of re-sweeping every enrollment. Pruning an empty
enrollment is idempotent: a resumed run won't re-encounter rows it already
deleted, and it never touches enrollments that have responses.

Instance Method Summary collapse

Instance Method Details

#build_enumerator(cursor:) ⇒ Enumerator

Returns yields (enrollment, cursor) pairs.

Parameters:

  • cursor (Object, nil)

    Sidekiq-managed resume cursor

Returns:

  • (Enumerator)

    yields (enrollment, cursor) pairs



16
17
18
# File 'app/workers/survey_check_worker.rb', line 16

def build_enumerator(cursor:)
  active_record_records_enumerator(SurveyEnrollment.all, cursor: cursor)
end

#each_iteration(enrollment, *_args) ⇒ void

This method returns an undefined value.

Parameters:

  • enrollment (SurveyEnrollment)

    the record for this iteration

  • _args (Array<Object>)

    extra perform_async args forwarded by
    Sidekiq::IterableJob; unused here



24
25
26
# File 'app/workers/survey_check_worker.rb', line 24

def each_iteration(enrollment, *_args)
  enrollment.destroy! if enrollment.customer_topics.joins(:topic_responses).empty?
end