Sha256: 200cdcddd1ea4f3ee1e9db671bff7da5a458e9c007dc82d3d41b3cc6b8c4e7b7

Contents?: true

Size: 737 Bytes

Versions: 13

Compression:

Stored size: 737 Bytes

Contents

require 'forwardable'

module Inferno
  module Repositories
    class InMemoryRepository
      extend Forwardable

      def_delegators 'self.class', :all, :all_by_id

      def insert(klass)
        all << klass
      end

      def find(id)
        all_by_id[id.to_s]
      end

      def exists?(id)
        all_by_id.include? id
      end

      class << self
        def all
          @all ||= []
        end

        # @private
        def all_by_id
          @all_by_id ||= {}
          @all_by_id.length == all.length ? @all_by_id : index_by_id
        end

        def index_by_id
          @all_by_id = {}
          all.each { |klass| @all_by_id[klass.id] = klass }
          @all_by_id
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
inferno_core-0.1.3 lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.1.3.pre2 lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.1.3.pre lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.1.2 lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.1.2.pre lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.1.1 lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.1.1.pre lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.1.0 lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.1.0.pre lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.0.8 lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.0.8.pre2 lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.0.8.pre lib/inferno/repositories/in_memory_repository.rb
inferno_core-0.0.7 lib/inferno/repositories/in_memory_repository.rb