From d090afc97b62ee3d744a03a9fae7071d1d61e75a Mon Sep 17 00:00:00 2001 From: zrll_ <46812903+zrll12@users.noreply.github.com> Date: Tue, 10 Dec 2024 01:24:21 +0800 Subject: [PATCH] fix: crash on judge when no user answer found --- src/service/score.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/service/score.rs b/src/service/score.rs index fa7630c..e503789 100644 --- a/src/service/score.rs +++ b/src/service/score.rs @@ -36,10 +36,15 @@ impl score::Model { }; let all = correct_answer.all_points.unwrap_or(0); let sub = correct_answer.sub_points.unwrap_or(0); + let Some(user_answer) = answer.get(question.id.to_string()) else { + scores.insert(question.id, 0); + all_score += all; + continue; + }; + let user_answer = user_answer.as_str().unwrap(); let score = match question.r#type { QuestionType::Text | QuestionType::SingleChoice => { - let user_answer = answer.get(question.id.to_string()).unwrap().as_str().unwrap(); if user_answer == correct_answer.answer { all } else { @@ -47,8 +52,6 @@ impl score::Model { } } QuestionType::MultipleChoice => { - let user_answer = answer.get(question.id.to_string()).unwrap() - .as_str().unwrap(); let user_answer: Vec = serde_json::from_str(user_answer).unwrap(); let correct_answer: Vec = serde_json::from_str(&correct_answer.answer).unwrap();