1212import io .f1 .backend .domain .game .dto .response .RoomListResponse ;
1313import io .f1 .backend .domain .game .dto .response .RoomResponse ;
1414import io .f1 .backend .domain .game .dto .response .RoomSettingResponse ;
15+ import io .f1 .backend .domain .game .event .RoomCreatedEvent ;
1516import io .f1 .backend .domain .game .model .GameSetting ;
1617import io .f1 .backend .domain .game .model .Player ;
1718import io .f1 .backend .domain .game .model .Room ;
1819import io .f1 .backend .domain .game .model .RoomSetting ;
1920import io .f1 .backend .domain .game .model .RoomState ;
2021import io .f1 .backend .domain .game .store .RoomRepository ;
22+ import io .f1 .backend .domain .quiz .app .QuizService ;
2123import io .f1 .backend .domain .quiz .entity .Quiz ;
22- import io .f1 .backend .domain .user .entity .User ;
2324
2425import lombok .RequiredArgsConstructor ;
2526
27+ import org .springframework .context .ApplicationEventPublisher ;
2628import org .springframework .stereotype .Service ;
2729
2830import java .util .List ;
3335@ RequiredArgsConstructor
3436public 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}
0 commit comments