module RelationalRedisMapper

Constants

VERSION

Attributes

id[RW]
persisted[RW]

Public Class Methods

included(base) click to toggle source
# File lib/relational_redis_mapper.rb, line 19
def self.included(base)
  base.extend ClassMethods
end

Public Instance Methods

changed?() click to toggle source
# File lib/relational_redis_mapper.rb, line 48
def changed?
  persisted_version && persisted_version != self
end
delete() click to toggle source
# File lib/relational_redis_mapper.rb, line 44
def delete
  remove_indices; delete_object
end
persisted_version() click to toggle source
# File lib/relational_redis_mapper.rb, line 52
def persisted_version
  klass.find(id) 
end
save() click to toggle source
# File lib/relational_redis_mapper.rb, line 35
def save 
  persisted_version.delete if changed?
  if validate
    save_object; save_indices
    return self
  end
  nil
end
validate() click to toggle source
# File lib/relational_redis_mapper.rb, line 29
def validate
  uniqueness_attr.none? do |attr| 
    redis.get_uniq_index key_gen.uniqueness_key(attr, send(attr)) 
  end || raise(ValidationError)
end

Private Instance Methods

delete_object() click to toggle source
# File lib/relational_redis_mapper.rb, line 62
def delete_object
  redis.delete_object class_key, id
end
remove_indices() click to toggle source
# File lib/relational_redis_mapper.rb, line 71
def remove_indices
  query_keys.all?{|attr| redis.rm_search_index key_gen.query_key(attr, send(attr)), id } &&
  uniqueness_attr.all? { |attr| redis.rm_uniq_index key_gen.uniqueness_key(attr, send(attr)) }
end
save_indices() click to toggle source
# File lib/relational_redis_mapper.rb, line 66
def save_indices
  query_keys.all?{|attr| redis.add_query_index key_gen.query_key(attr, send(attr)), id } &&
  uniqueness_attr.all?{|attr| redis.add_uniq_index key_gen.uniqueness_key(attr, send(attr)), id }
end
save_object() click to toggle source
# File lib/relational_redis_mapper.rb, line 58
def save_object
  redis.save_object class_key, id, self
end