Sha256: d436278a6458c47151ff69e19f88983c95acab7c9919fe26691b4ba266b85c8a

Contents?: true

Size: 813 Bytes

Versions: 6

Compression:

Stored size: 813 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

    attr_reader :map

    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

6 entries across 6 versions & 1 rubygems

Version Path
vedeu-0.0.30 lib/vedeu/repository/storage.rb
vedeu-0.0.29 lib/vedeu/repository/storage.rb
vedeu-0.0.28 lib/vedeu/repository/storage.rb
vedeu-0.0.27 lib/vedeu/repository/storage.rb
vedeu-0.0.26 lib/vedeu/repository/storage.rb
vedeu-0.0.25 lib/vedeu/repository/storage.rb