Sha256: dbe55fd6b5e382428e1e33e54509b4d55fb8133c4c8e91a99b42281d9ab872c4

Contents?: true

Size: 806 Bytes

Versions: 1

Compression:

Stored size: 806 Bytes

Contents

# frozen_string_literal: true

module Nuva
  class Repository
    attr_reader :data

    def initialize(data)
      @data = index_array_by_id(data)
      @data_by_code =
        data.each_with_object({}) { |item, acc| acc[item.code] = item }
    end

    def find(id_or_code)
      @data_by_code[id_or_code] || @data[id_or_code]
    end

    def all
      @data.values
    end

    def by_ids(ids)
      ids.map { |x| find x }.compact
    end

    def inspect
      "#<#{self.class.name} count=#{data.count}>"
    end

    private

    def index_array_by_id(array)
      array.each_with_object({}) { |item, acc| acc[item.id] = item }
    end
  end
end

require_relative "repositories/disease_repository"
require_relative "repositories/vaccine_repository"
require_relative "repositories/valence_repository"

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nuva-0.2.1 lib/nuva/repository.rb