lib/vedeu/repository/storage.rb in vedeu-0.0.38 vs lib/vedeu/repository/storage.rb in vedeu-0.0.39
- old
+ new
@@ -1,45 +1,40 @@
module Vedeu
class Storage
def initialize
- @map = {}
+ @store = {}
end
- def create(record)
- map_for(record)[record.name] = record
+ def create(entity, attributes)
+ entities(entity)
+ .store(attributes[:name], entity.new(attributes))
end
- def delete(record)
- map_for(record).delete(record.name)
- end
+ def all(entity = nil)
+ return entities unless entity
- def reset(entity)
- all(entity).map { |record| delete(record) }
+ entities(entity).values
end
- def all(entity)
- map_for_class(entity).values
- end
-
def query(entity, attribute, value)
return false if value.nil? || value.empty?
- map_for_class(entity).select do |_, result|
+ entities(entity).select do |name, result|
return result if result.send(attribute) == value
end
false
end
+ def reset(entity)
+ store[entity.to_s] = {}
+ end
+
private
- attr_reader :map
+ attr_reader :store
- def map_for_class(entity)
- map[entity.to_s.to_sym] ||= {}
- end
-
- def map_for(record)
- map_for_class(record.class)
+ def entities(entity)
+ store[entity.to_s] ||= {}
end
end
end