2021-12-19 18:59:11 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Jobs
|
|
|
|
# This job runs all of the scheduled problem checks for the admin dashboard
|
2024-02-22 22:20:32 -05:00
|
|
|
# on a regular basis. To add a problem check, add a new class that inherits
|
|
|
|
# the `ProblemCheck` base class.
|
2024-03-06 23:26:58 -05:00
|
|
|
class RunProblemChecks < ::Jobs::Scheduled
|
2023-11-02 21:05:29 -04:00
|
|
|
sidekiq_options retry: false
|
|
|
|
|
2021-12-19 18:59:11 -05:00
|
|
|
every 10.minutes
|
|
|
|
|
|
|
|
def execute(_args)
|
2024-02-26 22:17:39 -05:00
|
|
|
scheduled_checks =
|
|
|
|
ProblemCheckTracker.all.filter_map do |tracker|
|
2024-09-17 22:11:52 -04:00
|
|
|
tracker.check if eligible_for_this_run?(tracker)
|
2024-02-26 22:17:39 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
scheduled_checks.each do |check|
|
2024-03-06 23:26:58 -05:00
|
|
|
Jobs.enqueue(:run_problem_check, check_identifier: check.identifier.to_s)
|
2024-02-22 22:20:32 -05:00
|
|
|
end
|
2021-12-19 18:59:11 -05:00
|
|
|
end
|
2024-09-17 22:11:52 -04:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def eligible_for_this_run?(tracker)
|
|
|
|
tracker.check.present? && tracker.check.enabled? && tracker.check.scheduled? &&
|
|
|
|
tracker.ready_to_run?
|
|
|
|
end
|
2021-12-19 18:59:11 -05:00
|
|
|
end
|
|
|
|
end
|