mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 13:38:18 -08:00
chore: Only memoize functions primary functions, not every function in the
file. This should reduce memory use
This commit is contained in:
parent
6addc86ca6
commit
edbfd833e9
1 changed files with 17 additions and 43 deletions
|
|
@ -156,22 +156,15 @@ class Measure < ActiveRecord::Base
|
|||
private
|
||||
|
||||
def any_admin_data_collected?(school:, academic_year:)
|
||||
@any_admin_data_collected ||= Hash.new do |memo, (school, academic_year)|
|
||||
total_collected_admin_data_items =
|
||||
admin_data_items.map do |admin_data_item|
|
||||
admin_data_item.admin_data_values.where(school:, academic_year:).count
|
||||
end.flatten.sum
|
||||
memo[[school, academic_year]] = total_collected_admin_data_items.positive?
|
||||
end
|
||||
@any_admin_data_collected[[school, academic_year]]
|
||||
total_collected_admin_data_items =
|
||||
admin_data_items.map do |admin_data_item|
|
||||
admin_data_item.admin_data_values.where(school:, academic_year:).count
|
||||
end.flatten.sum
|
||||
total_collected_admin_data_items.positive?
|
||||
end
|
||||
|
||||
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:)
|
||||
end
|
||||
@sufficient_survey_responses[[school, academic_year]]
|
||||
sufficient_student_data?(school:, academic_year:) || sufficient_teacher_data?(school:, academic_year:)
|
||||
end
|
||||
|
||||
def scorify(average:, school:, academic_year:)
|
||||
|
|
@ -182,13 +175,10 @@ class Measure < ActiveRecord::Base
|
|||
end
|
||||
|
||||
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|
|
||||
SurveyItemResponse.grouped_responses(school:, academic_year:)[survey_item.id]
|
||||
end.remove_blanks
|
||||
memo[[survey_items, school, academic_year]] = averages.average || 0
|
||||
end
|
||||
@collect_survey_item_average[[survey_items, school, academic_year]]
|
||||
averages = survey_items.map do |survey_item|
|
||||
SurveyItemResponse.grouped_responses(school:, academic_year:)[survey_item.id]
|
||||
end.remove_blanks
|
||||
averages.average || 0
|
||||
end
|
||||
|
||||
def sufficient_student_data?(school:, academic_year:)
|
||||
|
|
@ -204,13 +194,9 @@ class Measure < ActiveRecord::Base
|
|||
end
|
||||
|
||||
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:) &&
|
||||
!sufficient_teacher_data?(school:, academic_year:)
|
||||
memo[[school, academic_year]] = lacks_sufficient_survey_data && !includes_admin_data_items?
|
||||
end
|
||||
|
||||
@incalculable_score[[school, academic_year]]
|
||||
lacks_sufficient_survey_data = !sufficient_student_data?(school:, academic_year:) &&
|
||||
!sufficient_teacher_data?(school:, academic_year:)
|
||||
lacks_sufficient_survey_data && !includes_admin_data_items?
|
||||
end
|
||||
|
||||
def collect_averages_for_teacher_student_and_admin_data(school:, academic_year:)
|
||||
|
|
@ -222,27 +208,15 @@ class Measure < ActiveRecord::Base
|
|||
end
|
||||
|
||||
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:)
|
||||
end
|
||||
|
||||
@teacher_average[[school, academic_year]]
|
||||
collect_survey_item_average(survey_items: teacher_survey_items, school:, academic_year:)
|
||||
end
|
||||
|
||||
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:)
|
||||
memo[[school, academic_year]] = collect_survey_item_average(survey_items:, school:, academic_year:)
|
||||
end
|
||||
@student_average[[school, academic_year]]
|
||||
survey_items = student_survey_items_with_sufficient_responses(school:, academic_year:)
|
||||
collect_survey_item_average(survey_items:, school:, academic_year:)
|
||||
end
|
||||
|
||||
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)
|
||||
end
|
||||
@admin_data_averages[[school, academic_year]]
|
||||
AdminDataValue.where(school:, academic_year:, admin_data_item: admin_data_items).pluck(:likert_score)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue