namespace :usda do

desc 'Import the latest USDA nutrition data'
task import: :environment do
  UsdaNutrientDatabase::Importer.new(
    'tmp/usda',
    UsdaNutrientDatabase.usda_version
  ).import
end

[
  'Weights', 'Footnotes', 'FoodGroups', 'Foods', 'FoodsNutrients',
  'Nutrients', 'SourceCodes'
].each do |importer_name|
  desc "Import the USDA #{importer_name} table"
  task "import_#{importer_name.downcase}" => :environment do
    download_and_import(importer_name)
  end
end

def download_and_import(importer_name)
  UsdaNutrientDatabase::Import::Downloader.new(
    'tmp/usda',
    UsdaNutrientDatabase.usda_version
  ).tap do |downloader|
    downloader.download_and_unzip
    "UsdaNutrientDatabase::Import::#{importer_name}".constantize.
      new('tmp/usda/sr28').import
    downloader.cleanup
  end
end

end