mattbeedle/usda-nutrient-database

View on GitHub
lib/usda_nutrient_database/importer.rb

Summary

Maintainability
A
0 mins
Test Coverage
module UsdaNutrientDatabase
  class Importer
    attr_reader :directory, :version

    def initialize(directory = 'tmp/usda', version = UsdaNutrientDatabase.usda_version)
      @directory = directory
      @version = version
    end

    def import
      downloader.download_and_unzip
      importer_names.each { |importer_name| importer_for(importer_name).import }
    ensure
      downloader.cleanup
    end

    private

    def importer_names
      [
        'FoodGroups',
        'SourceCodes',
        'Nutrients',
        'Foods',
        'FoodsNutrients',
        'Weights',
        'Footnotes'
      ]
    end

    def importer_for(importer_name)
      "UsdaNutrientDatabase::Import::#{importer_name}".constantize.
        new("#{directory}/#{version}")
    end

    def downloader
      UsdaNutrientDatabase::Import::Downloader.new(directory, version)
    end
  end
end