32 lines
870 B
Ruby
32 lines
870 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Projects
|
|
class InactiveProjectsDeletionNotificationWorker
|
|
include ApplicationWorker
|
|
include ExceptionBacktrace
|
|
|
|
idempotent!
|
|
data_consistency :sticky
|
|
sidekiq_options retry: 3
|
|
feature_category :compliance_management
|
|
|
|
def perform(project_id, deletion_date)
|
|
return if Gitlab::InactiveProjectsDeletionWarningTracker.new(project_id).notified?
|
|
|
|
project = Project.find(project_id)
|
|
|
|
notification_service.inactive_project_deletion_warning(project, deletion_date)
|
|
|
|
Gitlab::InactiveProjectsDeletionWarningTracker.new(project_id).mark_notified
|
|
rescue ActiveRecord::RecordNotFound => error
|
|
Gitlab::ErrorTracking.log_exception(error, project_id: project_id)
|
|
end
|
|
|
|
private
|
|
|
|
def notification_service
|
|
@notification_service ||= NotificationService.new
|
|
end
|
|
end
|
|
end
|