Skip to content

Commit b9a4ce3

Browse files
committed
✨ feat: quizId로 조회한 Quiz로 응답에 포함하는 기능 추가
1 parent 5d6071c commit b9a4ce3

File tree

2 files changed

+26
-20
lines changed

2 files changed

+26
-20
lines changed

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

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,19 @@
1212
import io.f1.backend.domain.game.dto.response.RoomListResponse;
1313
import io.f1.backend.domain.game.dto.response.RoomResponse;
1414
import io.f1.backend.domain.game.dto.response.RoomSettingResponse;
15+
import io.f1.backend.domain.game.event.RoomCreatedEvent;
1516
import io.f1.backend.domain.game.model.GameSetting;
1617
import io.f1.backend.domain.game.model.Player;
1718
import io.f1.backend.domain.game.model.Room;
1819
import io.f1.backend.domain.game.model.RoomSetting;
1920
import io.f1.backend.domain.game.model.RoomState;
2021
import io.f1.backend.domain.game.store.RoomRepository;
22+
import io.f1.backend.domain.quiz.app.QuizService;
2123
import io.f1.backend.domain.quiz.entity.Quiz;
22-
import io.f1.backend.domain.user.entity.User;
2324

2425
import lombok.RequiredArgsConstructor;
2526

27+
import org.springframework.context.ApplicationEventPublisher;
2628
import org.springframework.stereotype.Service;
2729

2830
import java.util.List;
@@ -33,8 +35,10 @@
3335
@RequiredArgsConstructor
3436
public class RoomService {
3537

38+
private final QuizService quizService;
3639
private final RoomRepository roomRepository;
3740
private final AtomicLong roomIdGenerator = new AtomicLong(0);
41+
private final ApplicationEventPublisher eventPublisher;
3842

3943
public RoomCreateResponse saveRoom(RoomCreateRequest request, Map<String, Object> loginUser) {
4044

@@ -46,7 +50,14 @@ public RoomCreateResponse saveRoom(RoomCreateRequest request, Map<String, Object
4650

4751
Long newId = roomIdGenerator.incrementAndGet();
4852

49-
roomRepository.saveRoom(new Room(newId, roomSetting, gameSetting, host));
53+
Room room = new Room(newId, roomSetting, gameSetting, host);
54+
55+
roomRepository.saveRoom(room);
56+
57+
Long quizId = room.getGameSetting().getQuizId();
58+
Quiz quiz = quizService.getQuizById(quizId);
59+
60+
eventPublisher.publishEvent(new RoomCreatedEvent(room, quiz));
5061

5162
return new RoomCreateResponse(newId);
5263
}
@@ -103,26 +114,16 @@ public RoomInitialData enterRoom(Long roomId, String sessionId) {
103114
destination, roomSettingResponse, gameSettingResponse, playerListResponse);
104115
}
105116

106-
// todo quizService에서 퀴즈 조회 메서드로 변경
107117
public RoomListResponse getAllRooms() {
108118
List<Room> rooms = roomRepository.findAll();
109-
List<RoomResponse> roomResponses =
110-
rooms.stream()
111-
.map(
112-
room -> {
113-
User user = new User(); // 임시 유저 객체
114-
user.setNickname("임시 유저 닉네임");
115-
116-
Quiz quiz = new Quiz(); // 임시 퀴즈 객체
117-
quiz.setTitle("임시 퀴즈 제목");
118-
quiz.setDescription("임시 퀴즈 설명");
119-
quiz.setThumbnailUrl("임시 이미지");
120-
quiz.setQuestions(List.of());
121-
quiz.setCreator(user);
122-
123-
return toRoomResponse(room, quiz);
124-
})
125-
.toList();
119+
List<RoomResponse> roomResponses = rooms.stream()
120+
.map(room -> {
121+
Long quizId = room.getGameSetting().getQuizId();
122+
Quiz quiz = quizService.getQuizById(quizId);
123+
124+
return toRoomResponse(room, quiz);
125+
})
126+
.toList();
126127
return new RoomListResponse(roomResponses);
127128
}
128129
}

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
@@ -91,4 +91,9 @@ private String convertToThumbnailPath(MultipartFile thumbnailFile) throws IOExce
9191
private String getExtension(String filename) {
9292
return filename.substring(filename.lastIndexOf(".") + 1);
9393
}
94+
95+
public Quiz getQuizById(Long quizId) {
96+
return quizRepository.findById(quizId)
97+
.orElseThrow(() -> new RuntimeException("E404002: 존재하지 않는 퀴즈입니다."));
98+
}
9499
}

0 commit comments

Comments
 (0)