From 16734f9ce73d0afe7f063c4a33df02f92f003f9e Mon Sep 17 00:00:00 2001 From: Alex Basson Date: Thu, 23 Sep 2021 14:29:25 -0400 Subject: [PATCH] Refactor survey response loader to use functional style --- app/services/survey_responses_data_loader.rb | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/app/services/survey_responses_data_loader.rb b/app/services/survey_responses_data_loader.rb index 26f3c33d..05daceea 100644 --- a/app/services/survey_responses_data_loader.rb +++ b/app/services/survey_responses_data_loader.rb @@ -1,10 +1,8 @@ require 'csv' class SurveyResponsesDataLoader - @@survey_item_responses = [] def self.load_data(filepath:) - @@survey_item_responses = [] csv_file = File.read(filepath) parsed_csv_file = CSV.parse(csv_file, headers: true) @@ -13,11 +11,11 @@ class SurveyResponsesDataLoader .filter { |header| header.start_with? 't-' or header.start_with? 's-' } .map { |survey_item_id| SurveyItem.find_by_survey_item_id survey_item_id } - parsed_csv_file.each do |row| + survey_item_responses = parsed_csv_file.map do |row| process_row row: row, survey_items: survey_items end - SurveyItemResponse.import @@survey_item_responses + SurveyItemResponse.import survey_item_responses.compact.flatten end private @@ -35,20 +33,20 @@ class SurveyResponsesDataLoader school = School.find_by_district_code_and_school_code(district_code, school_code) return if school.nil? - survey_items.each do |survey_item| - return unless SurveyItemResponse.find_by(response_id: response_id, survey_item: survey_item).nil? + survey_items.map do |survey_item| + next unless SurveyItemResponse.find_by(response_id: response_id, survey_item: survey_item).nil? likert_score = row[survey_item.survey_item_id] next if likert_score.nil? - @@survey_item_responses << SurveyItemResponse.new( + + SurveyItemResponse.new( response_id: response_id, academic_year: academic_year, school: school, survey_item: survey_item, likert_score: likert_score ) - end - + end.compact end end