chore: Only memoize functions primary functions, not every function in the

file.  This should reduce memory use
mciea-main
Nelson Jovel 2 years ago
parent e94974c4f3
commit db1d243979

@ -156,23 +156,16 @@ class Measure < ActiveRecord::Base
private private
def any_admin_data_collected?(school:, academic_year:) def any_admin_data_collected?(school:, academic_year:)
@any_admin_data_collected ||= Hash.new do |memo, (school, academic_year)|
total_collected_admin_data_items = total_collected_admin_data_items =
admin_data_items.map do |admin_data_item| admin_data_items.map do |admin_data_item|
admin_data_item.admin_data_values.where(school:, academic_year:).count admin_data_item.admin_data_values.where(school:, academic_year:).count
end.flatten.sum end.flatten.sum
memo[[school, academic_year]] = total_collected_admin_data_items.positive? total_collected_admin_data_items.positive?
end
@any_admin_data_collected[[school, academic_year]]
end end
def sufficient_survey_responses?(school:, academic_year:) def sufficient_survey_responses?(school:, academic_year:)
@sufficient_survey_responses ||= Hash.new do |memo, (school, academic_year)|
memo[[school, academic_year]] =
sufficient_student_data?(school:, academic_year:) || sufficient_teacher_data?(school:, academic_year:) sufficient_student_data?(school:, academic_year:) || sufficient_teacher_data?(school:, academic_year:)
end end
@sufficient_survey_responses[[school, academic_year]]
end
def scorify(average:, school:, academic_year:) def scorify(average:, school:, academic_year:)
meets_student_threshold = sufficient_student_data?(school:, academic_year:) meets_student_threshold = sufficient_student_data?(school:, academic_year:)
@ -182,13 +175,10 @@ class Measure < ActiveRecord::Base
end end
def collect_survey_item_average(survey_items:, school:, academic_year:) def collect_survey_item_average(survey_items:, school:, academic_year:)
@collect_survey_item_average ||= Hash.new do |memo, (survey_items, school, academic_year)|
averages = survey_items.map do |survey_item| averages = survey_items.map do |survey_item|
SurveyItemResponse.grouped_responses(school:, academic_year:)[survey_item.id] SurveyItemResponse.grouped_responses(school:, academic_year:)[survey_item.id]
end.remove_blanks end.remove_blanks
memo[[survey_items, school, academic_year]] = averages.average || 0 averages.average || 0
end
@collect_survey_item_average[[survey_items, school, academic_year]]
end end
def sufficient_student_data?(school:, academic_year:) def sufficient_student_data?(school:, academic_year:)
@ -204,13 +194,9 @@ class Measure < ActiveRecord::Base
end end
def incalculable_score(school:, academic_year:) def incalculable_score(school:, academic_year:)
@incalculable_score ||= Hash.new do |memo, (school, academic_year)|
lacks_sufficient_survey_data = !sufficient_student_data?(school:, academic_year:) && lacks_sufficient_survey_data = !sufficient_student_data?(school:, academic_year:) &&
!sufficient_teacher_data?(school:, academic_year:) !sufficient_teacher_data?(school:, academic_year:)
memo[[school, academic_year]] = lacks_sufficient_survey_data && !includes_admin_data_items? lacks_sufficient_survey_data && !includes_admin_data_items?
end
@incalculable_score[[school, academic_year]]
end end
def collect_averages_for_teacher_student_and_admin_data(school:, academic_year:) def collect_averages_for_teacher_student_and_admin_data(school:, academic_year:)
@ -222,27 +208,15 @@ class Measure < ActiveRecord::Base
end end
def teacher_average(school:, academic_year:) def teacher_average(school:, academic_year:)
@teacher_average ||= Hash.new do |memo, (school, academic_year)|
memo[[school, academic_year]] =
collect_survey_item_average(survey_items: teacher_survey_items, school:, academic_year:) collect_survey_item_average(survey_items: teacher_survey_items, school:, academic_year:)
end end
@teacher_average[[school, academic_year]]
end
def student_average(school:, academic_year:) def student_average(school:, academic_year:)
@student_average ||= Hash.new do |memo, (school, academic_year)|
survey_items = student_survey_items_with_sufficient_responses(school:, academic_year:) survey_items = student_survey_items_with_sufficient_responses(school:, academic_year:)
memo[[school, academic_year]] = collect_survey_item_average(survey_items:, school:, academic_year:) collect_survey_item_average(survey_items:, school:, academic_year:)
end
@student_average[[school, academic_year]]
end end
def admin_data_averages(school:, academic_year:) def admin_data_averages(school:, academic_year:)
@admin_data_averages ||= Hash.new do |memo, (school, academic_year)|
memo[[school, academic_year]] =
AdminDataValue.where(school:, academic_year:, admin_data_item: admin_data_items).pluck(:likert_score) AdminDataValue.where(school:, academic_year:, admin_data_item: admin_data_items).pluck(:likert_score)
end end
@admin_data_averages[[school, academic_year]]
end
end end

Loading…
Cancel
Save