Sha256: c55e9893eca52d1df9a9744219552157446da66e5717ce8c621172d9cf88bffd

Contents?: true

Size: 803 Bytes

Versions: 24

Compression:

Stored size: 803 Bytes

Contents

module Searchkick
  class ReindexQueue
    attr_reader :name

    def initialize(name)
      @name = name

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

    def push(record_id)
      Searchkick.with_redis { |r| r.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 = Searchkick.with_redis { |r| r.rpop(redis_key) })
        record_ids << record_id
      end
      record_ids.to_a
    end

    def clear
      Searchkick.with_redis { |r| r.del(redis_key) }
    end

    def length
      Searchkick.with_redis { |r| r.llen(redis_key) }
    end

    private

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

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
searchkick-4.5.0 lib/searchkick/reindex_queue.rb
searchkick-4.4.4 lib/searchkick/reindex_queue.rb
searchkick-4.4.3 lib/searchkick/reindex_queue.rb
searchkick-4.4.2 lib/searchkick/reindex_queue.rb
searchkick-4.4.1 lib/searchkick/reindex_queue.rb
searchkick-4.4.0 lib/searchkick/reindex_queue.rb
searchkick-4.3.1 lib/searchkick/reindex_queue.rb
searchkick-4.3.0 lib/searchkick/reindex_queue.rb
searchkick-4.2.1 lib/searchkick/reindex_queue.rb
searchkick-4.2.0 lib/searchkick/reindex_queue.rb
searchkick-4.1.1 lib/searchkick/reindex_queue.rb
searchkick-4.1.0 lib/searchkick/reindex_queue.rb
searchkick-4.0.2 lib/searchkick/reindex_queue.rb
searchkick-4.0.1 lib/searchkick/reindex_queue.rb
searchkick-4.0.0 lib/searchkick/reindex_queue.rb
searchkick-3.1.3 lib/searchkick/reindex_queue.rb
searchkick-3.1.2 lib/searchkick/reindex_queue.rb
searchkick-3.1.1 lib/searchkick/reindex_queue.rb
searchkick-3.1.0 lib/searchkick/reindex_queue.rb
searchkick-3.0.3 lib/searchkick/reindex_queue.rb