BigW Consortium Gitlab

prune_old_events_worker.rb 491 Bytes
Newer Older
1 2
class PruneOldEventsWorker
  include Sidekiq::Worker
3
  include CronjobQueue
4 5

  def perform
6 7 8 9 10 11 12
    # Contribution calendar shows maximum 12 months of events.
    # Double nested query is used because MySQL doesn't allow DELETE subqueries
    # on the same table.
    Event.unscoped.where(
      '(id IN (SELECT id FROM (?) ids_to_remove))',
      Event.unscoped.where(
        'created_at < ?',
13 14 15 16
        (12.months + 1.day).ago)
      .select(:id)
      .limit(10_000))
    .delete_all
17 18
  end
end