class Juvet::Adapters::RedisAdapter

Attributes

collection[R]
redis[R]

Public Class Methods

new(collection, options={}) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 9
def initialize(collection, options={})
  @collection = collection
  @redis = Redis.new options
end

Public Instance Methods

all() click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 14
def all
  redis.keys("#{collection_prefix}:*").map do |key|
    find_by_key(key)
  end
end
create(entity) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 20
def create(entity)
  update_attributes entity
end
destroy(id) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 24
def destroy(id)
  redis.del collection_key(id)
end
find(id) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 28
def find(id)
  find_by_key collection_key(id)
end
persist(entity) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 32
def persist(entity)
  find(entity.id).nil? ? create(entity) : update_attributes(entity)
end
update(entity) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 36
def update(entity)
  raise EntityNotFoundError if find(entity.id).nil?
  update_attributes entity
end

Private Instance Methods

collection_key(id) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 43
def collection_key(id)
  "#{collection_prefix}:#{id}"
end
collection_prefix() click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 47
def collection_prefix
  Juvet::String.new(collection.name).underscore
end
find_by_key(key) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 51
def find_by_key(key)
  attributes = redis.get key
  return nil if attributes.nil?
  collection.entity.new ({ id: id_from_key(key) }).merge(JSON.load(attributes))
end
id_from_key(key) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 57
def id_from_key(key)
  key.gsub("#{collection_prefix}:", "")
end
key(entity) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 61
def key(entity)
  collection_key entity.id
end
update_attributes(entity) click to toggle source
# File lib/juvet/adapters/redis_adapter.rb, line 65
def update_attributes(entity)
  redis.set key(entity), entity.attributes.to_json
  entity
end