class RediSearch::ReindexBatchesJob

Public Instance Methods

perform(klass, start, finish, batch_size) click to toggle source
# File lib/redisearch-rails/reindex_batches_job.rb, line 5
def perform(klass, start, finish, batch_size)
  klass = klass.constantize

  start = start.to_i
  finish = finish.to_i
  batch_size = batch_size.to_i
  
  batches_relation = nil

  if ActiveRecord::VERSION::STRING >= "5.0"
    batches_relation = klass.redisearch_import.find_in_batches(batch_size: batch_size, start: start, finish: finish)
  else
    batches_relation = klass.redisearch_import.where(klass.arel_table[:id].lteq(finish.to_i)).find_in_batches(batch_size: batch_size, start: start)
  end

  batches_relation.each do |records|
    klass.redisearch_index.client.multi do
      records.each do |record|
        record.reindex(mode: :inline, replace: true)
      end
    end
  end

end