Class: Blendris::RedisReferenceSet

Inherits:
RedisReferenceBase show all
Includes:
RedisNode, Enumerable
Defined in:
lib/blendris/reference_set.rb

Overview

RedisReferenceSet is a wrapper to a Redis set value and serves as a pointer to multiple other blendris objects.

Instance Attribute Summary

Attributes included from RedisNode

#key

Instance Method Summary collapse

Methods included from RedisNode

#clear, #exists?, #initialize, #notify_changed, #rename, #type

Methods included from RedisAccessor

database=, flushdb, #generate_key, #in_temporary_set, redis, #redis

Methods included from Utils

#blank, #camelize, #constantize, #sanitize_key

Methods inherited from RedisReferenceBase

#apply_reverse_add, #apply_reverse_delete, cast_from_redis, cast_to_redis, #initialize

Instance Method Details

#<<(*objs) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/blendris/reference_set.rb', line 24

def <<(*objs)
  objs.flatten!
  objs.compact!

  objs.each do |obj|
    if refkey = self.class.cast_to_redis(obj, @options)
      refs << refkey
      apply_reverse_add obj
    end
  end

  notify_changed if objs.count > 0

  self
end

#assign_ref(*values) ⇒ Object



65
66
67
# File 'lib/blendris/reference_set.rb', line 65

def assign_ref(*values)
  self << values
end

#delete(obj) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/blendris/reference_set.rb', line 40

def delete(obj)
  if refkey = self.class.cast_to_redis(obj, @options)
    deleted = refs.delete(refkey)
    apply_reverse_delete(obj) if deleted
    notify_changed
    deleted
  end
end

#eachObject



53
54
55
56
57
# File 'lib/blendris/reference_set.rb', line 53

def each
  redis.smembers(key).each do |refkey|
    yield self.class.cast_from_redis(refkey, @options)
  end
end

#getObject



49
50
51
# File 'lib/blendris/reference_set.rb', line 49

def get
  self
end

#include?(obj) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
62
63
# File 'lib/blendris/reference_set.rb', line 59

def include?(obj)
  refkey = self.class.cast_to_redis(obj, @options)

  refs.include? refkey
end

#references(value) ⇒ Object



73
74
75
# File 'lib/blendris/reference_set.rb', line 73

def references(value)
  self.include? value
end

#refsObject



11
12
13
# File 'lib/blendris/reference_set.rb', line 11

def refs
  @refs ||= RedisSet.new(@key)
end

#remove_ref(value) ⇒ Object



69
70
71
# File 'lib/blendris/reference_set.rb', line 69

def remove_ref(value)
  self.delete value
end

#set(*objs) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/blendris/reference_set.rb', line 15

def set(*objs)
  refkeys = objs.flatten.compact.map {|o| o.key}
  self.refs.set refkeys

  self
ensure
  notify_changed
end