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
|
||
|
|