Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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<Void> sseMessage = new SseMessage<>("COURSE_CLOSED", null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,21 @@
import java.util.List;

public interface QuestionRepository extends JpaRepository<Question, Long> {
List<Question> findByStudentIdAndCourse(String studentId, Course course);
@Query("SELECT q FROM Question q " +
"WHERE q.studentId = :studentId AND q.course = :course AND q.isComplete = false")
List<Question> findNotCompleteByStudentIdAndCourse(String studentId, Course course);

@Modifying
@Transactional
@Query("UPDATE Question q SET q.isComplete = true " +
"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);
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public QuestionAllResponse getQuestionsByStudentId(String studentId, Long course
log.debug("이전에 질문했던 목록을 조회합니다. : studentId = {}, courseId = {}", studentId, courseId);

Course course = getCourse(courseId);
List<CourseQuestionResponse> questions = findQuestions(studentId, course);
List<CourseQuestionResponse> questions = findQuestionsNotComplete(studentId, course);

return QuestionAllResponse.of(questions);
}
Expand Down Expand Up @@ -95,8 +95,8 @@ private Course getCourse(Long courseId) {
.orElseThrow(() -> new BaseException(CourseErrorCode.COURSE_NOT_FOUND));
}

private List<CourseQuestionResponse> findQuestions(String studentId, Course course) {
List<Question> questions = questionRepository.findByStudentIdAndCourse(studentId, course);
private List<CourseQuestionResponse> findQuestionsNotComplete(String studentId, Course course) {
List<Question> questions = questionRepository.findNotCompleteByStudentIdAndCourse(studentId, course);

return questions.stream()
.map(question -> new CourseQuestionResponse(
Expand Down