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 @@ -8,7 +8,6 @@
import io.f1.backend.domain.game.model.Room;
import io.f1.backend.domain.game.websocket.MessageSender;
import io.f1.backend.domain.quiz.app.QuizService;
import io.f1.backend.domain.quiz.entity.Quiz;

import lombok.extern.slf4j.Slf4j;

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import io.f1.backend.domain.game.model.Room;
import io.f1.backend.domain.game.websocket.MessageSender;
import io.f1.backend.domain.quiz.app.QuizService;
import io.f1.backend.domain.quiz.entity.Quiz;

public record RoundChangeRequest(int round) implements GameSettingChanger {

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

Quiz quiz = quizService.findQuizById(room.getQuizId());
int questionSize = quiz.getQuestions().size();
Long questionsCount = quizService.getQuestionsCount(room.getQuizId());

room.changeRound(round, questionSize);
room.changeRound(round, questionsCount.intValue());
return true;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.f1.backend.domain.game.model;

import io.f1.backend.domain.game.dto.request.TimeLimit;
import io.f1.backend.domain.quiz.entity.Quiz;
import io.f1.backend.global.exception.CustomException;
import io.f1.backend.global.exception.errorcode.GameErrorCode;

Expand All @@ -16,9 +15,9 @@ public class GameSetting {
private Integer round;
private int timeLimit;

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

public void changeTimeLimit(TimeLimit timeLimit) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import io.f1.backend.domain.game.dto.request.TimeLimit;
import io.f1.backend.domain.question.entity.Question;
import io.f1.backend.domain.quiz.entity.Quiz;
import io.f1.backend.global.exception.CustomException;
import io.f1.backend.global.exception.errorcode.RoomErrorCode;

Expand Down Expand Up @@ -161,8 +160,8 @@ public void resetAllPlayerReadyStates() {
}
}

public void changeQuiz(Quiz quiz) {
gameSetting.changeQuiz(quiz);
public void changeQuiz(Long quizId, int questionsCount) {
gameSetting.changeQuiz(quizId, questionsCount);
}

public void changeTimeLimit(TimeLimit timeLimit) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,4 +284,9 @@ public Quiz findQuizById(Long quizId) {
.findById(quizId)
.orElseThrow(() -> new CustomException(QuizErrorCode.QUIZ_NOT_FOUND));
}

@Transactional(readOnly = true)
public Long getQuestionsCount(Long quizId) {
return quizRepository.countQuestionsByQuizId(quizId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ public interface QuizRepository extends JpaRepository<Quiz, Long> {
@Query("SELECT q FROM Quiz q LEFT JOIN FETCH q.questions WHERE q.id = :quizId")
Optional<Quiz> findQuizWithQuestionsById(Long quizId);

@Query("SELECT COUNT(qst) FROM Quiz q JOIN q.questions qst WHERE q.id = :quizId")
Long countQuestionsByQuizId(Long quizId);

@Query(
"""
SELECT new io.f1.backend.domain.quiz.dto.QuizMinData (q.id, COUNT(qs.id))
Expand Down