summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/purge_stale_security_scans.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/background_migration/purge_stale_security_scans.rb')
-rw-r--r--lib/gitlab/background_migration/purge_stale_security_scans.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/gitlab/background_migration/purge_stale_security_scans.rb b/lib/gitlab/background_migration/purge_stale_security_scans.rb
new file mode 100644
index 00000000000..8b13a0382b4
--- /dev/null
+++ b/lib/gitlab/background_migration/purge_stale_security_scans.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module BackgroundMigration
+ # rubocop:disable Style/Documentation
+ class PurgeStaleSecurityScans # rubocop:disable Migration/BackgroundMigrationBaseClass
+ class SecurityScan < ::ApplicationRecord
+ include EachBatch
+
+ STALE_AFTER = 90.days
+
+ self.table_name = 'security_scans'
+
+ # Otherwise the schema_spec fails
+ validates :info, json_schema: { filename: 'security_scan_info', draft: 7 }
+
+ enum status: { succeeded: 1, purged: 6 }
+
+ scope :to_purge, -> { where('id <= ?', last_stale_record_id) }
+ scope :by_range, -> (range) { where(id: range) }
+
+ def self.last_stale_record_id
+ where('created_at < ?', STALE_AFTER.ago).order(created_at: :desc).first
+ end
+ end
+
+ def perform(_start_id, _end_id); end
+ end
+ end
+end
+
+Gitlab::BackgroundMigration::PurgeStaleSecurityScans.prepend_mod