Class: Redisabel::KeyOrderedSet

Inherits:
KeyValue
  • Object
show all
Includes:
HashFunctions
Defined in:
lib/redisabel/key_ordered_set.rb

Instance Attribute Summary

Attributes inherited from KeyValue

#id

Class Method Summary collapse

Instance Method Summary collapse

Methods included from HashFunctions

#[], #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

Methods included from Transformations

detect_type, transform, transform_hash, transform_list, transform_set, transform_string, transform_zset

Methods included from Finders

#filter, #find

Constructor Details

This class inherits a constructor from Redisabel::KeyValue

Class Method Details

.data_typeObject



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_methodObject



14
15
16
# File 'lib/redisabel/key_ordered_set.rb', line 14

def self.redis_delete_method
  return :zrem
end

.redis_store_methodObject



10
11
12
# File 'lib/redisabel/key_ordered_set.rb', line 10

def self.redis_store_method
  return :zadd
end

Instance Method Details

#saveObject



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