From 1b0af124f7a90600f89266989b505685003e38e0 Mon Sep 17 00:00:00 2001 From: Nelson Jovel Date: Wed, 17 Jan 2024 12:47:45 -0800 Subject: [PATCH] chore: fixed seeder. --- app/lib/dashboard/seeder.rb | 16 +++++++------- app/services/dashboard/enrollment_loader.rb | 3 --- app/services/dashboard/staffing_loader.rb | 23 ++++++--------------- lib/tasks/db.rake | 10 ++++----- 4 files changed, 18 insertions(+), 34 deletions(-) diff --git a/app/lib/dashboard/seeder.rb b/app/lib/dashboard/seeder.rb index 3fa9b3e..f4e7cd4 100644 --- a/app/lib/dashboard/seeder.rb +++ b/app/lib/dashboard/seeder.rb @@ -110,14 +110,14 @@ module Dashboard EnrollmentLoader.new.clone_previous_year_data if missing_enrollment_for_current_year end - # def seed_staffing(csv_file) - # StaffingLoader.load_data(filepath: csv_file) - # missing_staffing_for_current_year = Respondent.where(academic_year: AcademicYear.order(:range).last).none? do |respondent| - # respondent&.total_teachers&.zero? - # end - - # StaffingLoader.clone_previous_year_data if missing_staffing_for_current_year - # end + def seed_staffing(csv_file) + StaffingLoader.load_data(filepath: csv_file) + missing_staffing_for_current_year = Respondent.where(academic_year: AcademicYear.order(:range).last).none? do |respondent| + respondent&.total_teachers&.zero? + end + + StaffingLoader.clone_previous_year_data if missing_staffing_for_current_year + end private diff --git a/app/services/dashboard/enrollment_loader.rb b/app/services/dashboard/enrollment_loader.rb index e24c29e..b9f9a02 100644 --- a/app/services/dashboard/enrollment_loader.rb +++ b/app/services/dashboard/enrollment_loader.rb @@ -5,15 +5,12 @@ require "csv" module Dashboard class EnrollmentLoader def load_data(filepath:) - schools = [] enrollments = [] CSV.parse(File.read(filepath), headers: true) do |row| row = EnrollmentRowValues.new(row:, schools: school_hash, academic_years: academic_year_hash) next unless row.school.present? && row.academic_year.present? - schools << row.school - enrollments << create_enrollment_entry(row:) end diff --git a/app/services/dashboard/staffing_loader.rb b/app/services/dashboard/staffing_loader.rb index 3332f93..6ab2db8 100644 --- a/app/services/dashboard/staffing_loader.rb +++ b/app/services/dashboard/staffing_loader.rb @@ -13,11 +13,11 @@ module Dashboard schools << row.school - respondents << create_staffing_entry(row:) + respondents << { dashboard_school_id: row.school.id, dashboard_academic_year_id: row.academic_year.id, + total_teachers: row.fte_count } end - Respondent.import respondents, batch_size: 1000, on_duplicate_key_update: [:total_teachers] - Respondent.where.not(school: schools).destroy_all + Respondent.upsert_all(respondents, unique_by: %i[dashboard_school_id dashboard_academic_year_id]) end def self.clone_previous_year_data @@ -27,23 +27,12 @@ module Dashboard respondents = [] School.all.each do |school| Respondent.where(school:, academic_year: previous_year).each do |respondent| - current_respondent = Respondent.find_or_initialize_by(school:, academic_year: current_year) - current_respondent.total_teachers = respondent.total_teachers - respondents << current_respondent + respondents << { dashboard_school_id: respondent.school.id, dashboard_academic_year_id: current_year.id, + total_teachers: respondent.total_teachers } end end - Respondent.import respondents, batch_size: 1000, on_duplicate_key_update: [:total_teachers] + Respondent.upsert_all(respondents, unique_by: %i[dashboard_school_id dashboard_academic_year_id]) end - - private - - def self.create_staffing_entry(row:) - respondent = Respondent.find_or_initialize_by(school: row.school, academic_year: row.academic_year) - respondent.total_teachers = row.fte_count - respondent - end - - private_class_method :create_staffing_entry end class StaffingRowValues diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index a67af87..a9c5198 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -14,12 +14,10 @@ namespace :dashboard do Dir.glob("#{Dashboard::Engine.root}/data/dashboard/enrollment/*.csv").each do |file| seeder.seed_enrollment file end - # seeder.seed_enrollment Rails.root.join("data", "enrollment", "enrollment.csv") - # seeder.seed_enrollment Rails.root.join("data", "enrollment", "nj_enrollment.csv") - # seeder.seed_enrollment Rails.root.join("data", "enrollment", "wi_enrollment.csv") - # seeder.seed_staffing Rails.root.join("data", "staffing", "staffing.csv") - # seeder.seed_staffing Rails.root.join("data", "staffing", "nj_staffing.csv") - # seeder.seed_staffing Rails.root.join("data", "staffing", "wi_staffing.csv") + + Dir.glob("#{Dashboard::Engine.root}/data/dashboard/staffing/*.csv").each do |file| + seeder.seed_staffing file + end end end end