async fn process_ended_exam(
    conn: &mut PgConnection,
    exam_id: Uuid,
    already_processed_courses: &mut HashSet<Uuid>
) -> Result<()>
Expand description

Processes completions for courses associated with the given exam.

Because the same course can belong to multiple exams at the same time, a cache for already processed courses can be provided to avoid unnecessarily reprocessing those courses again.