Class: Redisabel::KeyOrderedSet
Instance Attribute Summary
Attributes inherited from KeyValue
#id
Class Method Summary
collapse
Instance Method Summary
collapse
#[], #delete, #store, #to_ary, #to_h, #to_hash, #update_data
Methods inherited from KeyValue
#==, #autosave=, #autosave?, database_key_name, #destroy, #empty?, #eql?, #initialize, #inspect, #load, #to_s, #value
detect_type, transform, transform_hash, transform_list, transform_set, transform_string, transform_zset
Methods included from Finders
#filter, #find
Class Method Details
.data_type ⇒ Object
6
7
8
|
# File 'lib/redisabel/key_ordered_set.rb', line 6
def self.data_type
return Hash
end
|
.range(id, first, last) ⇒ Object
18
19
20
21
22
23
|
# File 'lib/redisabel/key_ordered_set.rb', line 18
def self.range(id, first, last)
key = "#{self.database_key_name}:#{id}"
return unless Database.db.exists(key)
data = transform_zset(key, :zrangebyscore, first, last)
return self.new(false, id, data).freeze
end
|
.redis_delete_method ⇒ Object
14
15
16
|
# File 'lib/redisabel/key_ordered_set.rb', line 14
def self.redis_delete_method
return :zrem
end
|
.redis_store_method ⇒ Object
10
11
12
|
# File 'lib/redisabel/key_ordered_set.rb', line 10
def self.redis_store_method
return :zadd
end
|
Instance Method Details
#save ⇒ Object
32
33
34
35
36
37
38
39
40
|
# File 'lib/redisabel/key_ordered_set.rb', line 32
def save
return super do |key|
Database.db.del(key)
results = @data.map do |k, v|
Database.db.zadd(key, k, v)
end
next results.all?
end
end
|
#value=(val) ⇒ Object
25
26
27
28
29
30
|
# File 'lib/redisabel/key_ordered_set.rb', line 25
def value=(val)
if !val.respond_to?(:keys) || val.keys.any?{ |k| !self.key_valid?(k) }
raise ArgumentError.new('ordered sets only accept numbers as Hash keys')
end
super
end
|