You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
509 B
25 lines
509 B
# frozen_string_literal: true |
|
|
|
class Vacuum::BackupsVacuum |
|
def initialize(retention_period) |
|
@retention_period = retention_period |
|
end |
|
|
|
def perform |
|
vacuum_expired_backups! if retention_period? |
|
end |
|
|
|
private |
|
|
|
def vacuum_expired_backups! |
|
backups_past_retention_period.in_batches.destroy_all |
|
end |
|
|
|
def backups_past_retention_period |
|
Backup.unscoped.where(Backup.arel_table[:created_at].lt(@retention_period.ago)) |
|
end |
|
|
|
def retention_period? |
|
@retention_period.present? |
|
end |
|
end
|
|
|