Sha256: dbd19f87889735b289abd3518648d3a3250fbda59aaff76bae40ea1825b0813d

Contents?: true

Size: 792 Bytes

Versions: 4

Compression:

Stored size: 792 Bytes

Contents

module Vedeu
  class Storage
    def initialize
      @map = {}
    end

    def create(record)
      map_for(record)[record.name] = record
    end

    def delete(record)
      map_for(record).delete(record.name)
    end

    def reset(entity)
      all(entity).map { |record| delete(record) }
    end

    def find(entity, name)
      map_for_class(entity).fetch(name, nil)
    end

    def all(entity)
      map_for_class(entity).values
    end

    def query(entity, attribute, value)
      map_for_class(entity).select do |_, result|
        return result if result.send(attribute) == value
      end

      nil
    end

    private

    def map_for_class(entity)
      @map[entity.to_s.to_sym] ||= {}
    end

    def map_for(record)
      map_for_class(record.class)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
vedeu-0.0.24 lib/vedeu/repository/storage.rb
vedeu-0.0.23 lib/vedeu/repository/storage.rb
vedeu-0.0.22 lib/vedeu/repository/storage.rb
vedeu-0.0.21 lib/vedeu/repository/storage.rb