Module: MockRedis::HashMethods
- Includes:
- Assertions, UtilityMethods
- Included in:
- Database
- Defined in:
- lib/mock_redis/hash_methods.rb
Instance Method Summary collapse
- #hdel(key, field) ⇒ Object
- #hexists(key, field) ⇒ Object
- #hget(key, field) ⇒ Object
- #hgetall(key) ⇒ Object
- #hincrby(key, field, increment) ⇒ Object
- #hkeys(key) ⇒ Object
- #hlen(key) ⇒ Object
- #hmget(key, *fields) ⇒ Object
- #hmset(key, *kvpairs) ⇒ Object
- #hset(key, field, value) ⇒ Object
- #hsetnx(key, field, value) ⇒ Object
- #hvals(key) ⇒ Object
Instance Method Details
#hdel(key, field) ⇒ Object
9 10 11 12 13 |
# File 'lib/mock_redis/hash_methods.rb', line 9 def hdel(key, field) with_hash_at(key) do |hash| hash.delete(field) ? 1 : 0 end end |
#hexists(key, field) ⇒ Object
15 16 17 |
# File 'lib/mock_redis/hash_methods.rb', line 15 def hexists(key, field) with_hash_at(key) {|h| h.has_key?(field)} end |
#hget(key, field) ⇒ Object
19 20 21 |
# File 'lib/mock_redis/hash_methods.rb', line 19 def hget(key, field) with_hash_at(key) {|h| h[field]} end |
#hgetall(key) ⇒ Object
23 24 25 |
# File 'lib/mock_redis/hash_methods.rb', line 23 def hgetall(key) with_hash_at(key) {|h| h} end |
#hincrby(key, field, increment) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/mock_redis/hash_methods.rb', line 27 def hincrby(key, field, increment) with_hash_at(key) do |hash| unless can_incr?(data[key][field]) raise RuntimeError, "ERR hash value is not an integer" end unless looks_like_integer?(increment.to_s) raise RuntimeError, "ERR value is not an integer or out of range" end new_value = (hash[field] || "0").to_i + increment.to_i hash[field] = new_value.to_s new_value end end |
#hkeys(key) ⇒ Object
42 43 44 |
# File 'lib/mock_redis/hash_methods.rb', line 42 def hkeys(key) with_hash_at(key, &:keys) end |
#hlen(key) ⇒ Object
46 47 48 |
# File 'lib/mock_redis/hash_methods.rb', line 46 def hlen(key) hkeys(key).length end |
#hmget(key, *fields) ⇒ Object
50 51 52 53 |
# File 'lib/mock_redis/hash_methods.rb', line 50 def hmget(key, *fields) assert_has_args(fields, 'hmget') fields.map{|f| hget(key, f)} end |
#hmset(key, *kvpairs) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/mock_redis/hash_methods.rb', line 55 def hmset(key, *kvpairs) assert_has_args(kvpairs, 'hmset') if kvpairs.length.odd? raise RuntimeError, "ERR wrong number of arguments for HMSET" end kvpairs.each_slice(2) do |(k,v)| hset(key, k, v) end 'OK' end |
#hset(key, field, value) ⇒ Object
67 68 69 70 |
# File 'lib/mock_redis/hash_methods.rb', line 67 def hset(key, field, value) with_hash_at(key) {|h| h[field] = value.to_s} true end |
#hsetnx(key, field, value) ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/mock_redis/hash_methods.rb', line 72 def hsetnx(key, field, value) if hget(key, field) false else hset(key, field, value) true end end |
#hvals(key) ⇒ Object
81 82 83 |
# File 'lib/mock_redis/hash_methods.rb', line 81 def hvals(key) with_hash_at(key, &:values) end |