Sha256: f59acada41167c80ccf65de7695f1e987e0edf2c2fdd51fa4c2c8d9a7ec28262

Contents?: true

Size: 732 Bytes

Versions: 1

Compression:

Stored size: 732 Bytes

Contents

module Searchkick
  class ReindexQueue
    attr_reader :name

    def initialize(name)
      @name = name

      raise Searchkick::Error, "Searchkick.redis not set" unless redis
    end

    def push(record_id)
      redis.lpush(redis_key, record_id)
    end

    # TODO use reliable queuing
    def reserve(limit: 1000)
      record_ids = Set.new
      while record_ids.size < limit && record_id = redis.rpop(redis_key)
        record_ids << record_id
      end
      record_ids.to_a
    end

    def clear
      redis.del(redis_key)
    end

    def length
      redis.llen(redis_key)
    end

    private

    def redis
      Searchkick.redis
    end

    def redis_key
      "searchkick:reindex_queue:#{name}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
searchkick-2.1.0 lib/searchkick/reindex_queue.rb