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