Skip to content

Commit 06d87ea

Browse files
committed
♻️ refactor: 불필요 정보 조회 쿼리 변경
- 퀴즈가 문제의 정보까지 fetch join하는 쿼리에서 findQuizById 쿼리로 문제는 Lazy 로딩하도록 변경
1 parent 0b84f1f commit 06d87ea

File tree

9 files changed

+39
-28
lines changed

9 files changed

+39
-28
lines changed

backend/src/main/java/io/f1/backend/domain/game/app/GameService.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,15 @@ public void gameStart(Long roomId, UserPrincipal principal) {
7777
validateRoomStart(room, principal);
7878

7979
Long quizId = room.getGameSetting().getQuizId();
80-
Quiz quiz = quizService.getQuizWithQuestionsById(quizId);
80+
Quiz quiz = quizService.findQuizById(quizId);
81+
Long questionsCount = quizService.getQuestionsCount(quizId);
8182
List<Question> questions = prepareQuestions(room, quiz);
8283

8384
room.updateQuestions(questions);
8485
room.increaseCurrentRound();
8586
room.updateRoomState(RoomState.PLAYING);
8687

87-
eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz));
88+
eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz, questionsCount));
8889

8990
timerService.startTimer(room, START_DELAY);
9091

@@ -210,7 +211,10 @@ public void gameEnd(Room room) {
210211
MessageType.GAME_SETTING,
211212
toGameSettingResponse(
212213
room.getGameSetting(),
213-
quizService.getQuizWithQuestionsById(room.getGameSetting().getQuizId())));
214+
quizService.findQuizById(room.getGameSetting().getQuizId()),
215+
room.getRound()
216+
)
217+
);
214218
messageSender.sendBroadcast(
215219
destination, MessageType.ROOM_SETTING, toRoomSettingResponse(room));
216220
}
@@ -315,10 +319,11 @@ private void toggleReadyIfPossible(Room room, Player player) {
315319

316320
private void broadcastGameSetting(Room room) {
317321
String destination = getDestination(room.getId());
318-
Quiz quiz = quizService.getQuizWithQuestionsById(room.getGameSetting().getQuizId());
322+
Quiz quiz = quizService.findQuizById(room.getGameSetting().getQuizId());
323+
Long questionsCount = quizService.getQuestionsCount(quiz.getId());
319324
messageSender.sendBroadcast(
320325
destination,
321326
MessageType.GAME_SETTING,
322-
toGameSettingResponse(room.getGameSetting(), quiz));
327+
toGameSettingResponse(room.getGameSetting(), quiz, questionsCount));
323328
}
324329
}

backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public RoomCreateResponse saveRoom(RoomCreateRequest request) {
106106
host.getId(),
107107
() -> exitIfInAnotherRoom(room, getCurrentUserPrincipal()));
108108

109-
eventPublisher.publishEvent(new RoomCreatedEvent(room, quiz));
109+
eventPublisher.publishEvent(new RoomCreatedEvent(room, quiz, gameSetting.getRound()));
110110

111111
return new RoomCreateResponse(newId);
112112
}
@@ -205,7 +205,7 @@ public void initializeRoomSocket(Long roomId, UserPrincipal principal) {
205205
Quiz quiz = quizService.getQuizWithQuestionsById(quizId);
206206

207207
GameSettingResponse gameSettingResponse =
208-
toGameSettingResponse(room.getGameSetting(), quiz);
208+
toGameSettingResponse(room.getGameSetting(), quiz, quiz.getQuestions().size());
209209

210210
PlayerListResponse playerListResponse = toPlayerListResponse(room);
211211

@@ -231,7 +231,7 @@ public void initializeRoomSocket(Long roomId, UserPrincipal principal) {
231231
MessageType.SYSTEM_NOTICE,
232232
systemNoticeResponse);
233233

234-
eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz));
234+
eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz, quiz.getQuestions().size()));
235235
});
236236
});
237237
}
@@ -286,9 +286,9 @@ public RoomListResponse getAllRooms() {
286286
.map(
287287
room -> {
288288
Long quizId = room.getGameSetting().getQuizId();
289-
Quiz quiz = quizService.getQuizWithQuestionsById(quizId);
290-
291-
return toRoomResponse(room, quiz);
289+
Quiz quiz = quizService.findQuizById(quizId);
290+
Long questionsCount = quizService.getQuestionsCount(quizId);
291+
return toRoomResponse(room, quiz, questionsCount);
292292
})
293293
.toList();
294294
return new RoomListResponse(roomResponses);
@@ -332,10 +332,11 @@ public void reconnectSendResponse(Long roomId, UserPrincipal principal) {
332332

333333
Long quizId = room.getGameSetting().getQuizId();
334334

335-
Quiz quiz = quizService.getQuizWithQuestionsById(quizId);
335+
Quiz quiz = quizService.findQuizById(quizId);
336+
Long questionsCount = quizService.getQuestionsCount(quizId);
336337

337338
GameSettingResponse gameSettingResponse =
338-
toGameSettingResponse(room.getGameSetting(), quiz);
339+
toGameSettingResponse(room.getGameSetting(), quiz, questionsCount);
339340

340341
PlayerListResponse playerListResponse = toPlayerListResponse(room);
341342

@@ -475,9 +476,10 @@ private void cleanRoom(Room room, Player player) {
475476
room.removePlayer(player);
476477

477478
Long quizId = room.getQuizId();
478-
Quiz quiz = quizService.getQuizWithQuestionsById(quizId);
479+
Quiz quiz = quizService.findQuizById(quizId);
480+
Long questionsCount = quizService.getQuestionsCount(quizId);
479481

480-
eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz));
482+
eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz, questionsCount));
481483
}
482484

483485
public void handleDisconnectedPlayers(Room room, List<Player> disconnectedPlayers) {

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ public void afterChange(
4444
RoomUpdatedEvent roomUpdatedEvent =
4545
new RoomUpdatedEvent(
4646
room,
47-
quizService.getQuizWithQuestionsById(room.getGameSetting().getQuizId()));
47+
quizService.findQuizById(room.getGameSetting().getQuizId()),
48+
room.getGameSetting().getRound()
49+
);
4850

4951
eventPublisher.publishEvent(roomUpdatedEvent);
5052
}

backend/src/main/java/io/f1/backend/domain/game/event/RoomCreatedEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
import io.f1.backend.domain.game.model.Room;
44
import io.f1.backend.domain.quiz.entity.Quiz;
55

6-
public record RoomCreatedEvent(Room room, Quiz quiz) {}
6+
public record RoomCreatedEvent(Room room, Quiz quiz, long questionSize) {}

backend/src/main/java/io/f1/backend/domain/game/event/RoomUpdatedEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
import io.f1.backend.domain.game.model.Room;
44
import io.f1.backend.domain.quiz.entity.Quiz;
55

6-
public record RoomUpdatedEvent(Room room, Quiz quiz) {}
6+
public record RoomUpdatedEvent(Room room, Quiz quiz, long questionSize) {}

backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ public static RoomSettingResponse toRoomSettingResponse(Room room) {
5151
room.getRoomSetting().locked());
5252
}
5353

54-
public static GameSettingResponse toGameSettingResponse(GameSetting gameSetting, Quiz quiz) {
54+
public static GameSettingResponse toGameSettingResponse(GameSetting gameSetting, Quiz quiz, long questionsCount) {
5555
return new GameSettingResponse(
56-
gameSetting.getRound(), gameSetting.getTimeLimit(), toQuizResponse(quiz));
56+
gameSetting.getRound(), gameSetting.getTimeLimit(), toQuizResponse(quiz, questionsCount));
5757
}
5858

5959
public static PlayerListResponse toPlayerListResponse(Room room) {
@@ -66,7 +66,7 @@ public static PlayerListResponse toPlayerListResponse(Room room) {
6666
room.getHost().getNickname(), playerResponseList, playerResponseList.size());
6767
}
6868

69-
public static RoomResponse toRoomResponse(Room room, Quiz quiz) {
69+
public static RoomResponse toRoomResponse(Room room, Quiz quiz, long questionsCount) {
7070
return new RoomResponse(
7171
room.getId(),
7272
room.getRoomSetting().roomName(),
@@ -77,17 +77,17 @@ public static RoomResponse toRoomResponse(Room room, Quiz quiz) {
7777
quiz.getTitle(),
7878
quiz.getDescription(),
7979
quiz.getCreator().getNickname(),
80-
quiz.getQuestions().size(),
80+
(int) questionsCount,
8181
quiz.getThumbnailUrl());
8282
}
8383

84-
public static QuizResponse toQuizResponse(Quiz quiz) {
84+
public static QuizResponse toQuizResponse(Quiz quiz, long questionsCount) {
8585
return new QuizResponse(
8686
quiz.getId(),
8787
quiz.getTitle(),
8888
quiz.getDescription(),
8989
quiz.getThumbnailUrl(),
90-
quiz.getQuestions().size());
90+
(int) questionsCount);
9191
}
9292

9393
public static SystemNoticeResponse ofPlayerEvent(String nickname, RoomEventType roomEventType) {

backend/src/main/java/io/f1/backend/domain/game/sse/dto/RoomCreatedPayload.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ public record RoomCreatedPayload(
1010
String quizTitle,
1111
String description,
1212
String creator,
13-
int numberOfQuestion,
13+
int numberOfQuestions,
1414
String thumbnailUrl) {}

backend/src/main/java/io/f1/backend/domain/game/sse/dto/RoomUpdatedPayload.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ public record RoomUpdatedPayload(
77
String quizTitle,
88
String description,
99
String creator,
10-
int numberOfQuestion,
10+
int numberOfQuestions,
1111
String thumbnailUrl) {}

backend/src/main/java/io/f1/backend/domain/game/sse/mapper/SseMapper.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class SseMapper {
1616
public static LobbySseEvent<RoomCreatedPayload> fromRoomCreated(RoomCreatedEvent event) {
1717
Room room = event.room();
1818
Quiz quiz = event.quiz();
19+
long questionSize = event.questionSize();
1920
RoomCreatedPayload payload =
2021
new RoomCreatedPayload(
2122
room.getId(),
@@ -27,14 +28,15 @@ public static LobbySseEvent<RoomCreatedPayload> fromRoomCreated(RoomCreatedEvent
2728
quiz.getTitle(),
2829
quiz.getDescription(),
2930
quiz.getCreator().getNickname(),
30-
quiz.getQuestions().size(),
31+
(int) questionSize,
3132
quiz.getThumbnailUrl());
3233
return new LobbySseEvent<>(SseEventType.CREATE.name(), payload);
3334
}
3435

3536
public static LobbySseEvent<RoomUpdatedPayload> fromRoomUpdated(RoomUpdatedEvent event) {
3637
Room room = event.room();
3738
Quiz quiz = event.quiz();
39+
long questionSize = event.questionSize();
3840
RoomUpdatedPayload payload =
3941
new RoomUpdatedPayload(
4042
room.getId(),
@@ -43,7 +45,7 @@ public static LobbySseEvent<RoomUpdatedPayload> fromRoomUpdated(RoomUpdatedEvent
4345
quiz.getTitle(),
4446
quiz.getDescription(),
4547
quiz.getCreator().getNickname(),
46-
quiz.getQuestions().size(),
48+
(int) questionSize,
4749
quiz.getThumbnailUrl());
4850
return new LobbySseEvent<>(SseEventType.UPDATE.name(), payload);
4951
}

0 commit comments

Comments
 (0)