class RelationalRedisMapper::Relation

Attributes

order_by_method[R]
relation_sym[R]
subject[R]

Public Class Methods

new(subject, relation_sym, order_by_method=nil) click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 10
def initialize(subject, relation_sym, order_by_method=nil)
  @subject         = subject
  @relation_sym    = relation_sym
  @order_by_method = order_by_method
end

Public Instance Methods

<<(relation) click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 16
def << relation 
   $redis.zadd(relation_key, score(relation), relation.id)
   all
 end
all() click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 21
def all
  find_all_by_ids all_relation_ids
end
first() click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 32
def first
  find all_relation_ids(0,0)
end
last() click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 36
def last
  find all_relation_ids(-1,-1)
end
where(attr, val) click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 25
def where(attr, val)
  ids = all_relation_ids.select do |id|
    get_all_ids(attr, val).include?(id)
  end
  find_all_by_ids ids
end

Private Instance Methods

all_relation_ids(start=0, stop=-1) click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 44
def all_relation_ids(start=0, stop=-1)
  $redis.zrange(relation_key, start, stop)
end
relation_key() click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 41
def relation_key
  "#{subject.class_key}:#{relation_klass.class_key}:#{subject.id}"
end
relation_klass() click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 50
def relation_klass
  relation_sym.to_s.classify.constantize
end
score(object) click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 47
def score(object)
  order_by_method ? object.send(order_by_method) : 0
end