diff --git a/back-end/reacton/src/main/java/com/softeer/reacton/domain/course/ProfessorCourseService.java b/back-end/reacton/src/main/java/com/softeer/reacton/domain/course/ProfessorCourseService.java index 40ff3ed..05c5557 100644 --- a/back-end/reacton/src/main/java/com/softeer/reacton/domain/course/ProfessorCourseService.java +++ b/back-end/reacton/src/main/java/com/softeer/reacton/domain/course/ProfessorCourseService.java @@ -159,6 +159,7 @@ public void startCourse(String oauthId, long courseId) { Course course = getCourseByProfessor(oauthId, courseId); course.activate(); + questionRepository.deleteAllByCourse(course); log.info("수업이 시작 상태로 변경되었습니다. courseId = {}", courseId); } @@ -169,6 +170,7 @@ public void closeCourse(String oauthId, long courseId) { Course course = getCourseByProfessor(oauthId, courseId); course.deactivate(); + questionRepository.deleteCompleteByCourse(course); log.debug("SSE 서버에 수업 종료 메시지 전송을 요청합니다."); SseMessage sseMessage = new SseMessage<>("COURSE_CLOSED", null); diff --git a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java index d89afbd..50ece14 100644 --- a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java +++ b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java @@ -10,7 +10,9 @@ import java.util.List; public interface QuestionRepository extends JpaRepository { - List findByStudentIdAndCourse(String studentId, Course course); + @Query("SELECT q FROM Question q " + + "WHERE q.studentId = :studentId AND q.course = :course AND q.isComplete = false") + List findNotCompleteByStudentIdAndCourse(String studentId, Course course); @Modifying @Transactional @@ -18,5 +20,11 @@ public interface QuestionRepository extends JpaRepository { "WHERE q.studentId = :studentId AND q.course = :course AND q.id = :questionId") int updateQuestion(@Param("studentId") String studentId, @Param("course") Course course, @Param("questionId") Long questionId); + @Modifying + @Transactional + @Query("DELETE FROM Question q " + + "WHERE q.course = :course AND q.isComplete = true") + void deleteCompleteByCourse(@Param("course") Course course); + void deleteAllByCourse(Course course); } diff --git a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/StudentQuestionService.java b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/StudentQuestionService.java index ef4d302..7094048 100644 --- a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/StudentQuestionService.java +++ b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/StudentQuestionService.java @@ -33,7 +33,7 @@ public QuestionAllResponse getQuestionsByStudentId(String studentId, Long course log.debug("이전에 질문했던 목록을 조회합니다. : studentId = {}, courseId = {}", studentId, courseId); Course course = getCourse(courseId); - List questions = findQuestions(studentId, course); + List questions = findQuestionsNotComplete(studentId, course); return QuestionAllResponse.of(questions); } @@ -95,8 +95,8 @@ private Course getCourse(Long courseId) { .orElseThrow(() -> new BaseException(CourseErrorCode.COURSE_NOT_FOUND)); } - private List findQuestions(String studentId, Course course) { - List questions = questionRepository.findByStudentIdAndCourse(studentId, course); + private List findQuestionsNotComplete(String studentId, Course course) { + List questions = questionRepository.findNotCompleteByStudentIdAndCourse(studentId, course); return questions.stream() .map(question -> new CourseQuestionResponse(