50 lines
870 B
Ruby
50 lines
870 B
Ruby
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
|
|
|