You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
870 B

require 'uuidtools'
require_relative 'backend/detector'
require_relative 'backend/memory'
module DataRepository
def self.new(backend_or_connection=nil)
backend = Backend::Detector.new(backend_or_connection).detect
Repository.new(backend)
end # DataRepository.new
class Repository
def initialize(storage=Backend::Memory.new)
@storage = storage
end
def backend
@storage
end
def store(key, data, options={})
storage.store(key.to_s, data, options)
end
def fetch(key)
storage.fetch(key.to_s)
end
def delete(key)
storage.delete(key.to_s)
end
def exists?(key)
storage.exists?(key)
end
def keys
storage.keys
end
def next_id
UUIDTools::UUID.timestamp_create
end
private
attr_reader :storage
end # Handler
end # DataRepository