Skip to content

Commit be9d546

Browse files
committed
♻️ quizMinData 생성
1 parent d7911fe commit be9d546

File tree

5 files changed

+25
-10
lines changed

5 files changed

+25
-10
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import io.f1.backend.domain.game.store.RoomRepository;
3737
import io.f1.backend.domain.question.entity.Question;
3838
import io.f1.backend.domain.quiz.app.QuizService;
39+
import io.f1.backend.domain.quiz.dto.QuizMinData;
3940
import io.f1.backend.domain.quiz.entity.Quiz;
4041
import io.f1.backend.domain.user.dto.UserPrincipal;
4142
import io.f1.backend.global.exception.CustomException;
@@ -67,10 +68,10 @@ public class RoomService {
6768

6869
public RoomCreateResponse saveRoom(RoomCreateRequest request) {
6970

70-
Long quizMinId = quizService.getQuizMinId();
71-
Quiz quiz = quizService.getQuizWithQuestionsById(quizMinId);
71+
QuizMinData quizMinData = quizService.getQuizMinData();
72+
//Quiz quiz = quizService.getQuizWithQuestionsById(quizMinId);
7273

73-
GameSetting gameSetting = toGameSetting(quiz);
74+
GameSetting gameSetting = toGameSetting(quizMinData);
7475

7576
Player host = createPlayer();
7677

@@ -84,7 +85,7 @@ public RoomCreateResponse saveRoom(RoomCreateRequest request) {
8485

8586
roomRepository.saveRoom(room);
8687

87-
eventPublisher.publishEvent(new RoomCreatedEvent(room, quiz));
88+
//eventPublisher.publishEvent(new RoomCreatedEvent(room, quiz));
8889

8990
return new RoomCreateResponse(newId);
9091
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import io.f1.backend.domain.game.model.Player;
1818
import io.f1.backend.domain.game.model.Room;
1919
import io.f1.backend.domain.game.model.RoomSetting;
20+
import io.f1.backend.domain.quiz.dto.QuizMinData;
2021
import io.f1.backend.domain.quiz.entity.Quiz;
2122

2223
import java.time.Instant;
@@ -32,8 +33,8 @@ public static RoomSetting toRoomSetting(RoomCreateRequest request) {
3233
request.roomName(), request.maxUserCount(), request.locked(), request.password());
3334
}
3435

35-
public static GameSetting toGameSetting(Quiz quiz) {
36-
return new GameSetting(quiz.getId(), quiz.getQuestions().size(), DEFAULT_TIME_LIMIT);
36+
public static GameSetting toGameSetting(QuizMinData quizMinData) {
37+
return new GameSetting(quizMinData.quizMinId(), quizMinData.questionCount().intValue(), DEFAULT_TIME_LIMIT);
3738
}
3839

3940
public static RoomSettingResponse toRoomSettingResponse(Room room) {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.f1.backend.domain.quiz.dto.QuizCreateResponse;
1313
import io.f1.backend.domain.quiz.dto.QuizListPageResponse;
1414
import io.f1.backend.domain.quiz.dto.QuizListResponse;
15+
import io.f1.backend.domain.quiz.dto.QuizMinData;
1516
import io.f1.backend.domain.quiz.dto.QuizQuestionListResponse;
1617
import io.f1.backend.domain.quiz.entity.Quiz;
1718
import io.f1.backend.domain.user.dao.UserRepository;
@@ -236,8 +237,8 @@ public Quiz getQuizWithQuestionsById(Long quizId) {
236237
}
237238

238239
@Transactional(readOnly = true)
239-
public Long getQuizMinId() {
240-
return quizRepository.getQuizMinId();
240+
public QuizMinData getQuizMinData() {
241+
return quizRepository.getQuizMinData();
241242
}
242243

243244
@Transactional(readOnly = true)

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.f1.backend.domain.quiz.dao;
22

33
import io.f1.backend.domain.question.entity.Question;
4+
import io.f1.backend.domain.quiz.dto.QuizMinData;
45
import io.f1.backend.domain.quiz.entity.Quiz;
56

67
import org.springframework.data.domain.Page;
@@ -20,8 +21,14 @@ public interface QuizRepository extends JpaRepository<Quiz, Long> {
2021
@Query("SELECT q FROM Quiz q LEFT JOIN FETCH q.questions WHERE q.id = :quizId")
2122
Optional<Quiz> findQuizWithQuestionsById(Long quizId);
2223

23-
@Query("SELECT MIN(q.id) FROM Quiz q")
24-
Long getQuizMinId();
24+
@Query("""
25+
SELECT new io.f1.backend.domain.quiz.dto.QuizMinData (q.id, COUNT(qs.id))
26+
FROM Quiz q
27+
LEFT JOIN q.questions qs
28+
WHERE q.id = (SELECT MIN(q2.id) FROM Quiz q2)
29+
GROUP BY q.id
30+
""")
31+
QuizMinData getQuizMinData();
2532

2633
@Query(
2734
value = "SELECT * FROM question WHERE quiz_id = :quizId ORDER BY RAND() LIMIT :round",
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package io.f1.backend.domain.quiz.dto;
2+
3+
public record QuizMinData(Long quizMinId, Long questionCount) {
4+
5+
}

0 commit comments

Comments
 (0)