-
Notifications
You must be signed in to change notification settings - Fork 7
Populating database with fipe data
Caio Fellipe edited this page Sep 11, 2015
·
2 revisions
Create the following rake task, on let's say, lib/tasks/fipe.rake:
namespace 'fipe' do
desc "Imports all the fipe data for all the available tables."
task(import: :environment) do
vehicles = FipeApi::Vehicle.all
vehicles.each do |fvehicle|
puts " Importing Vehicle #{fvehicle.id} - #{fvehicle.name}\n"
vehicle = Vehicle.find_by_code(fvehicle.id)
if !vehicle
vehicle = Vehicle.create(code: fvehicle.id, name: fvehicle.name)
end
fvehicle.get_tables.each do |ftable|
puts "Importing Table #{ftable.id} - #{ftable.month}/#{ftable.year}\n"
table = Table.find_by_code(ftable.id)
if table
next
end
table = Table.create(code: ftable.id, month: ftable.month, year: ftable.year)
fvehicle.get_brands(ftable).each do |fbrand|
puts " Importing Brand #{fbrand.id} - #{fbrand.name}\n"
brand = Brand.find_by_code(fbrand.id)
if !brand
brand = Brand.create(code: fbrand.id, name: fbrand.name, vehicle_id: vehicle.id, table_id: table.id)
end
fbrand.get_models(ftable).each do |fmodel|
puts " Importing Model #{fmodel.id} - #{fmodel.name}\n"
model = Model.find_by_code(fmodel.id)
if !model
model = Model.create(code: fmodel.id, name: fmodel.name, brand_id: brand.id)
end
fmodel.get_years(ftable).each do |fyear|
puts " Importing Year #{fyear.id} - #{fyear.name}\n"
year = Year.create(code: fyear.id, name: fyear.name, fuel: fyear.fuel, model_id: model.id)
result = fyear.get_result(ftable)
puts " Importing Price #{result.id} - #{result.price}\n"
VehiclePrice.create(fipe_code: result.id, authentication: result.authentication, fuel: result.fuel, price: result.price.gsub("R$","").gsub(".","").gsub(",",".").to_f, year_id: year.id, query_time: result.query_time)
end
end
end
end
end
end
end