summaryrefslogtreecommitdiff
path: root/app/workers/prune_old_events_worker.rb
blob: 392abb9c21b43e2476ee37362b3ae7ebc5a09659 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class PruneOldEventsWorker
  include Sidekiq::Worker
  include CronjobQueue

  def perform
    # 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 < ?',
        (12.months + 1.day).ago).
      select(:id).
      limit(10_000)).
    delete_all
  end
end