Browse Source
* extract rent ranges rake task to a class * use service instead of rake task in seeds * require csv in correct locationpull/1066/head
Phil Lee
2 years ago
committed by
GitHub
3 changed files with 41 additions and 21 deletions
@ -0,0 +1,35 @@ |
|||||||
|
require "csv" |
||||||
|
|
||||||
|
module Imports |
||||||
|
class RentRangesService |
||||||
|
attr_reader :start_year, :path, :count |
||||||
|
|
||||||
|
def initialize(start_year:, path:) |
||||||
|
@start_year = start_year |
||||||
|
@path = path |
||||||
|
@count = 0 |
||||||
|
end |
||||||
|
|
||||||
|
def call |
||||||
|
CSV.foreach(path, headers: true) do |row| |
||||||
|
LaRentRange.upsert( |
||||||
|
{ ranges_rent_id: row["ranges_rent_id"], |
||||||
|
lettype: row["lettype"], |
||||||
|
beds: row["beds"], |
||||||
|
start_year:, |
||||||
|
la: row["la"], |
||||||
|
soft_min: row["soft_min"], |
||||||
|
soft_max: row["soft_max"], |
||||||
|
hard_min: row["hard_min"], |
||||||
|
hard_max: row["hard_max"] }, |
||||||
|
unique_by: %i[start_year lettype beds la], |
||||||
|
) |
||||||
|
self.count = count + 1 |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
private |
||||||
|
|
||||||
|
attr_writer :count |
||||||
|
end |
||||||
|
end |
@ -1,29 +1,14 @@ |
|||||||
require "csv" |
|
||||||
|
|
||||||
namespace :data_import do |
namespace :data_import do |
||||||
desc "Import annual rent range data" |
desc "Import annual rent range data" |
||||||
task :rent_ranges, %i[start_year path] => :environment do |_task, args| |
task :rent_ranges, %i[start_year path] => :environment do |_task, args| |
||||||
start_year = args[:start_year] |
start_year = args[:start_year] |
||||||
path = args[:path] |
path = args[:path] |
||||||
count = 0 |
|
||||||
|
|
||||||
raise "Usage: rake data_import:rent_ranges[start_year,'path/to/csv_file']" if path.blank? || start_year.blank? |
raise "Usage: rake data_import:rent_ranges[start_year,'path/to/csv_file']" if path.blank? || start_year.blank? |
||||||
|
|
||||||
CSV.foreach(path, headers: true) do |row| |
service = Imports::RentRangesService.new(start_year:, path:) |
||||||
LaRentRange.upsert( |
service.call |
||||||
{ ranges_rent_id: row["ranges_rent_id"], |
|
||||||
lettype: row["lettype"], |
pp "Created/updated #{service.count} LA Rent Range records for #{start_year}" unless Rails.env.test? |
||||||
beds: row["beds"], |
|
||||||
start_year:, |
|
||||||
la: row["la"], |
|
||||||
soft_min: row["soft_min"], |
|
||||||
soft_max: row["soft_max"], |
|
||||||
hard_min: row["hard_min"], |
|
||||||
hard_max: row["hard_max"] }, |
|
||||||
unique_by: %i[start_year lettype beds la], |
|
||||||
) |
|
||||||
count += 1 |
|
||||||
end |
|
||||||
pp "Created/updated #{count} LA Rent Range records for #{start_year}" unless Rails.env.test? |
|
||||||
end |
end |
||||||
end |
end |
||||||
|
Loading…
Reference in new issue