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
|