Skip to content

Commit 6fcd83c

Browse files
LimKangHyunsilver-eunjoo
authored andcommitted
๐Ÿ› fix: ๋ผ์šด๋“œ ๋ณ€๊ฒฝ ์‹œ question๊ฐœ์ˆ˜ ์กฐํšŒ์— fetch join ์ ์šฉ (#116)
* ๐Ÿ› fix: round ๋ณ€๊ฒฝ ์‹œ question ์กฐํšŒ์— fetch join ์ ์šฉ * โ™ป๏ธ refactor: questionCount๋งŒ ์ฐพ๋Š” ์ฟผ๋ฆฌ๋กœ ๋ณ€๊ฒฝ ๋ฐ ๋ถˆํ•„์š”ํ•œ ํ€ด์ฆˆ ์•„์ด๋”” ์กฐํšŒ ์‚ญ์ œ * chore: Java ์Šคํƒ€์ผ ์ˆ˜์ • --------- Co-authored-by: github-actions <>
1 parent 931a184 commit 6fcd83c

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.findQuizById(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

@@ -195,8 +194,8 @@ public void resetAllPlayerReadyStates() {
195194
}
196195
}
197196

198-
public void changeQuiz(Quiz quiz) {
199-
gameSetting.changeQuiz(quiz);
197+
public void changeQuiz(Long quizId, int questionsCount) {
198+
gameSetting.changeQuiz(quizId, questionsCount);
200199
}
201200

202201
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)