Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking β€œSign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize Empty Submission Querying in graders_controller #7381

Merged
merged 9 commits into from
Jan 25, 2025
Next Next commit
refactored filter_empty_submissions method to prevent unnecessary que…
…rying
hemmatio committed Jan 12, 2025
commit a60e37ceb3712491e5dd1868cc5cc58954c8f315
8 changes: 4 additions & 4 deletions app/controllers/graders_controller.rb
Original file line number Diff line number Diff line change
@@ -253,10 +253,10 @@ def unassign_graders(grouping_ids, grader_ids)

# Returns array of grouping ids with non empty submissions
def filter_empty_submissions(grouping_ids)
grouping_ids.select do |grouping_id|
submission = Submission.find_by(grouping_id: grouping_id, submission_version_used: true)
submission && !submission.is_empty
end
submissions = Submission.where(grouping_id: grouping_ids, submission_version_used: true)
.pluck(:grouping_id, :is_empty)
non_empty_grouping_ids = submissions.reject { |_, is_empty| is_empty }.map { |grouping_id, _| grouping_id.to_s }
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reject is awkward here; instead, you can move the is_empty check into the .where method above.

non_empty_grouping_ids & grouping_ids
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The & grouping_ids isn't necessary, the where filter should only include grouping ids that were included in the original grouping_ids argument

end

def filter_grouping_by_section(section_assignments, assignment)