1# frozen_string_literal: true
2
3class AdminEmailWorker # rubocop:disable Scalability/IdempotentWorker
4  include ApplicationWorker
5
6  data_consistency :always
7
8  # rubocop:disable Scalability/CronWorkerContext
9  # This worker does not perform work scoped to a context
10  include CronjobQueue
11  # rubocop:enable Scalability/CronWorkerContext
12
13  feature_category :source_code_management
14
15  def perform
16    send_repository_check_mail if Gitlab::CurrentSettings.repository_checks_enabled
17  end
18
19  private
20
21  # rubocop: disable CodeReuse/ActiveRecord
22  def send_repository_check_mail
23    repository_check_failed_count = Project.where(last_repository_check_failed: true).count
24    return if repository_check_failed_count == 0
25
26    RepositoryCheckMailer.notify(repository_check_failed_count).deliver_now
27  end
28  # rubocop: enable CodeReuse/ActiveRecord
29end
30