Sha256: 636b761afaaf959a9181bbaaa87d263285103aa0d853c59279253bfba095ad1e

Contents?: true

Size: 816 Bytes

Versions: 7

Compression:

Stored size: 816 Bytes

Contents

# frozen_string_literal: true

module Wayfarer
  module Redis
    Barrier = Struct.new(:batch) do
      include Connection

      def redis_key
        "wayfarer-barrier-#{batch}"
      end

      def reset!
        redis { |conn| conn.del(redis_key) }
      end

      def seen?(url)
        !redis { |conn| conn.sadd(redis_key, url) }
      end

      def peek(urls)
        major, minor, = Version.determine

        # SMISMEMBER is only supported on Redis >= 6.2.0
        if major > 6 || (major == 6 && minor >= 2)
          redis { |conn| conn.smismember(redis_key, urls) }.map { |val| val == 1 }
        else
          urls.map { |url| redis { |conn| conn.sismember(redis_key, url) } }
        end
      end

      def unsee(url)
        redis { |conn| conn.srem(redis_key, url) }
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
wayfarer-0.4.6 lib/wayfarer/redis/barrier.rb
wayfarer-0.4.5 lib/wayfarer/redis/barrier.rb
wayfarer-0.4.4 lib/wayfarer/redis/barrier.rb
wayfarer-0.4.3 lib/wayfarer/redis/barrier.rb
wayfarer-0.4.2 lib/wayfarer/redis/barrier.rb
wayfarer-0.4.1 lib/wayfarer/redis/barrier.rb
wayfarer-0.4.0 lib/wayfarer/redis/barrier.rb