Skip to content

Commit ea462fa

Browse files
committed
♻️ refactor: questionCount만 찾는 쿼리로 변경 및 불필요한 퀴즈 아이디 조회 삭제
1 parent b5b4007 commit ea462fa

File tree

6 files changed

+17
-17
lines changed

6 files changed

+17
-17
lines changed

backend/src/main/java/io/f1/backend/domain/game/dto/request/QuizChangeRequest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import io.f1.backend.domain.game.model.Room;
99
import io.f1.backend.domain.game.websocket.MessageSender;
1010
import io.f1.backend.domain.quiz.app.QuizService;
11-
import io.f1.backend.domain.quiz.entity.Quiz;
1211

1312
import lombok.extern.slf4j.Slf4j;
1413

@@ -20,11 +19,8 @@ public boolean change(Room room, QuizService quizService) {
2019
if (room.getQuizId() == quizId) {
2120
return false; // 동일하면 무시
2221
}
23-
Quiz quiz = quizService.getQuizWithQuestionsById(quizId);
24-
int questionSize = quiz.getQuestions().size();
25-
room.changeQuiz(quiz);
26-
// 퀴즈의 문제 갯수로 변경
27-
room.changeRound(questionSize, questionSize);
22+
Long questionsCount = quizService.getQuestionsCount(quizId);
23+
room.changeQuiz(quizId, questionsCount.intValue());
2824
return true;
2925
}
3026

backend/src/main/java/io/f1/backend/domain/game/dto/request/RoundChangeRequest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import io.f1.backend.domain.game.model.Room;
44
import io.f1.backend.domain.game.websocket.MessageSender;
55
import io.f1.backend.domain.quiz.app.QuizService;
6-
import io.f1.backend.domain.quiz.entity.Quiz;
76

87
public record RoundChangeRequest(int round) implements GameSettingChanger {
98

@@ -13,10 +12,9 @@ public boolean change(Room room, QuizService quizService) {
1312
return false; // 동일하면 무시
1413
}
1514

16-
Quiz quiz = quizService.getQuizWithQuestionsById(room.getQuizId());
17-
int questionSize = quiz.getQuestions().size();
15+
Long questionsCount = quizService.getQuestionsCount(room.getQuizId());
1816

19-
room.changeRound(round, questionSize);
17+
room.changeRound(round, questionsCount.intValue());
2018
return true;
2119
}
2220

backend/src/main/java/io/f1/backend/domain/game/model/GameSetting.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.f1.backend.domain.game.model;
22

33
import io.f1.backend.domain.game.dto.request.TimeLimit;
4-
import io.f1.backend.domain.quiz.entity.Quiz;
54
import io.f1.backend.global.exception.CustomException;
65
import io.f1.backend.global.exception.errorcode.GameErrorCode;
76

@@ -16,9 +15,9 @@ public class GameSetting {
1615
private Integer round;
1716
private int timeLimit;
1817

19-
public void changeQuiz(Quiz quiz) {
20-
quizId = quiz.getId();
21-
round = quiz.getQuestions().size(); // 라운드를 바꾼 퀴즈의 문제 수로 동기화
18+
public void changeQuiz(Long quizId, int questionsCount) {
19+
this.quizId = quizId;
20+
round = questionsCount;// 라운드를 바꾼 퀴즈의 문제 수로 동기화
2221
}
2322

2423
public void changeTimeLimit(TimeLimit timeLimit) {

backend/src/main/java/io/f1/backend/domain/game/model/Room.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import io.f1.backend.domain.game.dto.request.TimeLimit;
44
import io.f1.backend.domain.question.entity.Question;
5-
import io.f1.backend.domain.quiz.entity.Quiz;
65
import io.f1.backend.global.exception.CustomException;
76
import io.f1.backend.global.exception.errorcode.RoomErrorCode;
87

@@ -161,8 +160,8 @@ public void resetAllPlayerReadyStates() {
161160
}
162161
}
163162

164-
public void changeQuiz(Quiz quiz) {
165-
gameSetting.changeQuiz(quiz);
163+
public void changeQuiz(Long quizId, int questionsCount) {
164+
gameSetting.changeQuiz(quizId, questionsCount);
166165
}
167166

168167
public void changeTimeLimit(TimeLimit timeLimit) {

backend/src/main/java/io/f1/backend/domain/quiz/app/QuizService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,4 +284,9 @@ public Quiz findQuizById(Long quizId) {
284284
.findById(quizId)
285285
.orElseThrow(() -> new CustomException(QuizErrorCode.QUIZ_NOT_FOUND));
286286
}
287+
288+
@Transactional(readOnly = true)
289+
public Long getQuestionsCount(Long quizId) {
290+
return quizRepository.countQuestionsByQuizId(quizId);
291+
}
287292
}

backend/src/main/java/io/f1/backend/domain/quiz/dao/QuizRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public interface QuizRepository extends JpaRepository<Quiz, Long> {
2121
@Query("SELECT q FROM Quiz q LEFT JOIN FETCH q.questions WHERE q.id = :quizId")
2222
Optional<Quiz> findQuizWithQuestionsById(Long quizId);
2323

24+
@Query("SELECT COUNT(qst) FROM Quiz q JOIN q.questions qst WHERE q.id = :quizId")
25+
Long countQuestionsByQuizId(Long quizId);
26+
2427
@Query(
2528
"""
2629
SELECT new io.f1.backend.domain.quiz.dto.QuizMinData (q.id, COUNT(qs.id))

0 commit comments

Comments
 (0)