about summary refs log tree commit diff
path: root/app/workers/scheduler/indexing_scheduler.rb
blob: c423966297c3109b6d21efcd1ccf1734f4232f86 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# frozen_string_literal: true

class Scheduler::IndexingScheduler
  include Sidekiq::Worker
  include Redisable

  sidekiq_options retry: 0

  def perform
    return unless Chewy.enabled?

    indexes.each do |type|
      with_redis do |redis|
        ids = redis.smembers("chewy:queue:#{type.name}")

        type.import!(ids)

        redis.pipelined do |pipeline|
          ids.each { |id| pipeline.srem("chewy:queue:#{type.name}", id) }
        end
      end
    end
  end

  def indexes
    [AccountsIndex, TagsIndex, StatusesIndex]
  end
end