Sha256: f2b5108b617e5f634d1060c0d4992be7835b85ecda4625941969ec4ca4cc4fc8
Contents?: true
Size: 1.09 KB
Versions: 2
Compression:
Stored size: 1.09 KB
Contents
# frozen_string_literal: true module Sidekiq module Paginator def page(key, pageidx = 1, page_size = 25, opts = nil) current_page = pageidx.to_i < 1 ? 1 : pageidx.to_i pageidx = current_page - 1 total_size = 0 items = [] starting = pageidx * page_size ending = starting + page_size - 1 Sidekiq.redis do |conn| type = conn.type(key) case type when "zset" rev = opts && opts[:reverse] total_size, items = conn.multi { conn.zcard(key) if rev conn.zrevrange(key, starting, ending, with_scores: true) else conn.zrange(key, starting, ending, with_scores: true) end } [current_page, total_size, items] when "list" total_size, items = conn.multi { conn.llen(key) conn.lrange(key, starting, ending) } [current_page, total_size, items] when "none" [1, 0, []] else raise "can't page a #{type}" end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sidekiq-6.0.0 | lib/sidekiq/paginator.rb |
sidekiq-6.0.0.pre1 | lib/sidekiq/paginator.rb |