Sha256: d7c73460548a1909fa28f455ef0de265e2ada47e11e7456c632ec73194ffa4d9

Contents?: true

Size: 660 Bytes

Versions: 1

Compression:

Stored size: 660 Bytes

Contents

module Searchkick
  class ReindexQueue
    attr_reader :name

    def initialize(name)
      @name = name
    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.0.4 lib/searchkick/reindex_queue.rb