Skip to content

Commit 75f755c

Browse files
committed
✨ feat: 룸 전체 조회 API 구현
1 parent 054810a commit 75f755c

File tree

5 files changed

+66
-0
lines changed

5 files changed

+66
-0
lines changed

backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@
44
import io.f1.backend.domain.game.dto.request.RoomCreateRequest;
55
import io.f1.backend.domain.game.dto.response.RoomCreateResponse;
66

7+
import io.f1.backend.domain.game.dto.response.RoomListResponse;
8+
import io.f1.backend.domain.game.model.Room;
79
import jakarta.validation.Valid;
810

11+
import java.util.List;
912
import lombok.RequiredArgsConstructor;
1013

1114
import org.springframework.http.HttpStatus;
15+
import org.springframework.web.bind.annotation.GetMapping;
1216
import org.springframework.web.bind.annotation.PostMapping;
1317
import org.springframework.web.bind.annotation.RequestBody;
1418
import org.springframework.web.bind.annotation.RequestMapping;
@@ -35,4 +39,9 @@ public RoomCreateResponse saveRoom(@RequestBody @Valid RoomCreateRequest request
3539

3640
return roomService.saveRoom(request, loginUser);
3741
}
42+
43+
@GetMapping
44+
public RoomListResponse getAllRooms() {
45+
return roomService.getAllRooms();
46+
}
3847
}

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@
22

33
import static io.f1.backend.domain.game.mapper.RoomMapper.toRoomSetting;
44

5+
import io.f1.backend.domain.game.dto.response.RoomListResponse;
56
import io.f1.backend.domain.game.dto.request.RoomCreateRequest;
67
import io.f1.backend.domain.game.dto.response.RoomCreateResponse;
8+
import io.f1.backend.domain.game.dto.response.RoomResponse;
9+
import io.f1.backend.domain.game.mapper.RoomMapper;
710
import io.f1.backend.domain.game.model.GameSetting;
811
import io.f1.backend.domain.game.model.Player;
912
import io.f1.backend.domain.game.model.Room;
1013
import io.f1.backend.domain.game.model.RoomSetting;
1114
import io.f1.backend.domain.game.store.RoomRepository;
1215

16+
import io.f1.backend.domain.quiz.entity.Quiz;
17+
import io.f1.backend.domain.user.entity.User;
18+
import java.util.List;
1319
import lombok.RequiredArgsConstructor;
1420

1521
import org.springframework.stereotype.Service;
@@ -38,4 +44,24 @@ public RoomCreateResponse saveRoom(RoomCreateRequest request, Map<String, Object
3844

3945
return new RoomCreateResponse(newId);
4046
}
47+
48+
// todo quizService에서 퀴즈 조회 메서드로 변경
49+
public RoomListResponse getAllRooms() {
50+
List<Room> rooms = roomRepository.findAll();
51+
List<RoomResponse> roomResponses = rooms.stream().map(room -> {
52+
53+
User user = new User(); // 임시 유저 객체
54+
user.setNickname("임시 유저 닉네임");
55+
56+
Quiz quiz = new Quiz(); // 임시 퀴즈 객체
57+
quiz.setTitle("임시 퀴즈 제목");
58+
quiz.setDescription("임시 퀴즈 설명");
59+
quiz.setThumbnailUrl("임시 이미지");
60+
quiz.setQuestions(List.of());
61+
quiz.setCreator(user);
62+
63+
return RoomMapper.toRoomResponse(room, quiz);
64+
}).toList();
65+
return new RoomListResponse(roomResponses);
66+
}
4167
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,31 @@
11
package io.f1.backend.domain.game.mapper;
22

33
import io.f1.backend.domain.game.dto.request.RoomCreateRequest;
4+
import io.f1.backend.domain.game.dto.response.RoomResponse;
5+
import io.f1.backend.domain.game.model.Room;
46
import io.f1.backend.domain.game.model.RoomSetting;
7+
import io.f1.backend.domain.quiz.entity.Quiz;
58

69
public class RoomMapper {
710

811
public static RoomSetting toRoomSetting(RoomCreateRequest request) {
912
return new RoomSetting(
1013
request.roomName(), request.maxUserCount(), request.locked(), request.password());
1114
}
15+
16+
public static RoomResponse toRoomResponse(Room room, Quiz quiz) {
17+
return new RoomResponse(
18+
room.getId(),
19+
room.getRoomSetting().roomName(),
20+
room.getRoomSetting().maxUserCount(),
21+
room.getPlayerSessionMap().size(),
22+
room.getRoomSetting().locked(),
23+
room.getState().name(),
24+
quiz.getTitle(),
25+
quiz.getDescription(),
26+
quiz.getCreator().getNickname(),
27+
quiz.getQuestions().size(),
28+
quiz.getThumbnailUrl()
29+
);
30+
}
1231
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package io.f1.backend.domain.game.store;
22

33
import io.f1.backend.domain.game.model.Room;
4+
import java.util.List;
45

56
public interface RoomRepository {
7+
68
void saveRoom(Room room);
9+
10+
List<Room> findAll();
11+
712
}

backend/src/main/java/io/f1/backend/domain/game/store/RoomRepositoryImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import io.f1.backend.domain.game.model.Room;
44

5+
import java.util.ArrayList;
6+
import java.util.List;
57
import org.springframework.stereotype.Repository;
68

79
import java.util.Map;
@@ -17,6 +19,11 @@ public void saveRoom(Room room) {
1719
roomMap.put(room.getId(), room);
1820
}
1921

22+
@Override
23+
public List<Room> findAll() {
24+
return new ArrayList<>(roomMap.values());
25+
}
26+
2027
// 테스트 전용 메소드
2128
public Room getRoomForTest(Long roomId) {
2229
return roomMap.get(roomId);

0 commit comments

Comments
 (0)