You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							31 lines
						
					
					
						
							744 B
						
					
					
				
			
		
		
	
	
							31 lines
						
					
					
						
							744 B
						
					
					
				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], | 
						|
        ) | 
						|
        @count += 1 | 
						|
      end | 
						|
    end | 
						|
  end | 
						|
end
 | 
						|
 |