Module: MockRedis::ZsetMethods

Includes:
Assertions, UtilityMethods
Included in:
Database
Defined in:
lib/mock_redis/zset_methods.rb

Instance Method Summary collapse

Instance Method Details

#zadd(key, score, member) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/mock_redis/zset_methods.rb', line 10

def zadd(key, score, member)
  assert_scorey(score)

  retval = !zscore(key, member)
  with_zset_at(key) {|z| z.add(score, member)}
  retval
end

#zcard(key) ⇒ Object



18
19
20
# File 'lib/mock_redis/zset_methods.rb', line 18

def zcard(key)
  with_zset_at(key, &:size)
end

#zcount(key, min, max) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/mock_redis/zset_methods.rb', line 22

def zcount(key, min, max)
  assert_scorey(min, 'min or max')
  assert_scorey(max, 'min or max')

  with_zset_at(key) do |z|
    z.count do |score, _|
      score >= min && score <= max
    end
  end
end

#zincrby(key, increment, member) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/mock_redis/zset_methods.rb', line 33

def zincrby(key, increment, member)
  assert_scorey(increment)
  with_zset_at(key) do |z|
    old_score = z.include?(member) ? z.score(member) : 0
    new_score = old_score + increment
    z.add(new_score, member)
    new_score.to_s
  end
end

#zinterstore(destination, keys, options = {}) ⇒ Object



43
44
45
46
47
48
# File 'lib/mock_redis/zset_methods.rb', line 43

def zinterstore(destination, keys, options={})
  assert_has_args(keys, 'zinterstore')

  data[destination] = combine_weighted_zsets(keys, options, :intersection)
  zcard(destination)
end

#zrange(key, start, stop, options = {}) ⇒ Object



50
51
52
53
54
# File 'lib/mock_redis/zset_methods.rb', line 50

def zrange(key, start, stop, options={})
  with_zset_at(key) do |z|
    to_response(z.sorted[start..stop], options)
  end
end

#zrangebyscore(key, min, max, options = {}) ⇒ Object



56
57
58
59
60
61
# File 'lib/mock_redis/zset_methods.rb', line 56

def zrangebyscore(key, min, max, options={})
  with_zset_at(key) do |zset|
    all_results = zset.in_range(min, max)
    to_response(apply_limit(all_results, options[:limit]), options)
  end
end

#zrank(key, member) ⇒ Object



63
64
65
# File 'lib/mock_redis/zset_methods.rb', line 63

def zrank(key, member)
  with_zset_at(key) {|z| z.sorted_members.index(member) }
end

#zrem(key, member) ⇒ Object



67
68
69
# File 'lib/mock_redis/zset_methods.rb', line 67

def zrem(key, member)
  with_zset_at(key) {|z| !!z.delete?(member)}
end

#zremrangebyrank(key, start, stop) ⇒ Object



77
78
79
80
81
# File 'lib/mock_redis/zset_methods.rb', line 77

def zremrangebyrank(key, start, stop)
  zrange(key, start, stop).
    each {|member| zrem(key, member)}.
    size
end

#zremrangebyscore(key, min, max) ⇒ Object



83
84
85
86
87
# File 'lib/mock_redis/zset_methods.rb', line 83

def zremrangebyscore(key, min, max)
  zrangebyscore(key, min, max).
    each {|member| zrem(key, member)}.
    size
end

#zrevrange(key, start, stop, options = {}) ⇒ Object



71
72
73
74
75
# File 'lib/mock_redis/zset_methods.rb', line 71

def zrevrange(key, start, stop, options={})
  with_zset_at(key) do |z|
    to_response(z.sorted.reverse[start..stop], options)
  end
end

#zrevrangebyscore(key, max, min, options = {}) ⇒ Object



89
90
91
92
93
94
95
96
97
# File 'lib/mock_redis/zset_methods.rb', line 89

def zrevrangebyscore(key, max, min, options={})
  with_zset_at(key) do |zset|
    to_response(
      apply_limit(
        zset.in_range(min, max).reverse,
        options[:limit]),
      options)
  end
end

#zrevrank(key, member) ⇒ Object



99
100
101
# File 'lib/mock_redis/zset_methods.rb', line 99

def zrevrank(key, member)
  with_zset_at(key) {|z| z.sorted_members.reverse.index(member) }
end

#zscore(key, member) ⇒ Object



103
104
105
106
107
108
# File 'lib/mock_redis/zset_methods.rb', line 103

def zscore(key, member)
  with_zset_at(key) do |z|
    score = z.score(member)
    score.to_s if score
  end
end

#zunionstore(destination, keys, options = {}) ⇒ Object



110
111
112
113
114
115
# File 'lib/mock_redis/zset_methods.rb', line 110

def zunionstore(destination, keys, options={})
  assert_has_args(keys, 'zunionstore')

  data[destination] = combine_weighted_zsets(keys, options, :union)
  zcard(destination)
end