Skip to content

Commit 797ed65

Browse files
committed
♻️ 리뷰 반영 수정
1 parent 6eb0942 commit 797ed65

File tree

7 files changed

+59
-39
lines changed

7 files changed

+59
-39
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.f1.backend.domain.game.app.RoomService;
44
import io.f1.backend.domain.game.dto.request.RoomCreateRequest;
5+
import io.f1.backend.domain.game.dto.response.RoomCreateResponse;
56
import jakarta.validation.Valid;
67
import java.util.HashMap;
78
import java.util.Map;
@@ -23,7 +24,7 @@ public class RoomController {
2324

2425
@PostMapping
2526
@ResponseStatus(HttpStatus.CREATED)
26-
public Long saveRoom(@RequestBody @Valid RoomCreateRequest request) {
27+
public RoomCreateResponse saveRoom(@RequestBody @Valid RoomCreateRequest request) {
2728

2829
Map<String, Object> loginUser = new HashMap<>();
2930
loginUser.put("id", 1L);

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
import static io.f1.backend.domain.game.mapper.RoomMapper.toRoomSetting;
44

55
import io.f1.backend.domain.game.dto.request.RoomCreateRequest;
6+
import io.f1.backend.domain.game.dto.response.RoomCreateResponse;
67
import io.f1.backend.domain.game.model.GameSetting;
78
import io.f1.backend.domain.game.model.Player;
9+
import io.f1.backend.domain.game.model.Room;
810
import io.f1.backend.domain.game.model.RoomSetting;
911
import io.f1.backend.domain.game.store.RoomRepository;
1012
import java.util.Map;
13+
import java.util.concurrent.atomic.AtomicLong;
1114
import lombok.RequiredArgsConstructor;
1215
import org.springframework.stereotype.Service;
1316

@@ -16,16 +19,21 @@
1619
public class RoomService {
1720

1821
private final RoomRepository roomRepository;
22+
private final AtomicLong roomIdGenerator = new AtomicLong(0);
1923

20-
public Long saveRoom(RoomCreateRequest request, Map<String, Object> loginUser) {
24+
public RoomCreateResponse saveRoom(RoomCreateRequest request, Map<String, Object> loginUser) {
2125

22-
//todo 제일 작은 index quizId 가져와서 gameSetting
26+
//todo 제일 작은 index quizId 가져와서 gameSetting(round 설정)
2327
GameSetting gameSetting = new GameSetting(1L, 10, 60);
2428
//todo security에서 가져오는걸로 변경
2529
Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString());
2630
RoomSetting roomSetting = toRoomSetting(request);
2731

28-
return roomRepository.saveRoom(gameSetting, host, roomSetting);
32+
Long newId = roomIdGenerator.incrementAndGet();
33+
34+
roomRepository.saveRoom(new Room(newId,roomSetting,gameSetting,host));
35+
36+
return new RoomCreateResponse(newId);
2937
}
3038

3139
}
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package io.f1.backend.domain.game.dto.request;
22

3+
import jakarta.validation.constraints.Max;
34
import jakarta.validation.constraints.Min;
5+
import jakarta.validation.constraints.NotBlank;
46
import jakarta.validation.constraints.NotNull;
57

6-
public record RoomCreateRequest(@NotNull(message = "방 제목은 필수입니다.") String roomName,
7-
@NotNull(message = "인원 수 입력은 필수입니다.") @Min(value = 2, message = "방 인원 수는 최소 2명 이상이어야합니다.") Integer maxUserCount,
8-
String password,
9-
boolean locked) {
8+
public record RoomCreateRequest(@NotBlank(message = "방 제목은 필수입니다.") String roomName,
9+
@NotNull(message = "인원 수 입력은 필수입니다.") @Min(value = 2, message = "방 인원 수는 최소 2명입니다.") @Max(value = 8, message = "방 인원 수는 최대 8명 입니다.") Integer maxUserCount,
10+
@NotNull String password,
11+
@NotNull boolean locked) {
1012

1113
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package io.f1.backend.domain.game.dto.response;
2+
3+
public record RoomCreateResponse(Long roomId) {
4+
5+
}
6+
Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,7 @@
11
package io.f1.backend.domain.game.store;
22

3-
import io.f1.backend.domain.game.model.GameSetting;
4-
import io.f1.backend.domain.game.model.Player;
53
import io.f1.backend.domain.game.model.Room;
6-
import io.f1.backend.domain.game.model.RoomSetting;
7-
import java.util.Map;
8-
import java.util.concurrent.ConcurrentHashMap;
9-
import java.util.concurrent.atomic.AtomicLong;
10-
import org.springframework.stereotype.Repository;
114

12-
@Repository
13-
public class RoomRepository {
14-
15-
private final Map<Long, Room> rooms = new ConcurrentHashMap<>();
16-
private final AtomicLong roomIdGenerator = new AtomicLong(0);
17-
18-
public Long saveRoom(GameSetting gameSetting, Player host, RoomSetting roomSetting) {
19-
Long newId = roomIdGenerator.incrementAndGet();
20-
21-
rooms.put(newId, new Room(newId,roomSetting,gameSetting,host));
22-
23-
return newId;
24-
}
25-
26-
//테스트 전용 메소드
27-
public Room getRoomForTest(Long roomId) {
28-
return rooms.get(roomId);
29-
}
30-
31-
}
5+
public interface RoomRepository {
6+
void saveRoom(Room room);
7+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.f1.backend.domain.game.store;
2+
3+
import io.f1.backend.domain.game.model.Room;
4+
import java.util.Map;
5+
import java.util.concurrent.ConcurrentHashMap;
6+
import org.springframework.stereotype.Repository;
7+
8+
@Repository
9+
public class RoomRepositoryImpl implements RoomRepository {
10+
11+
private final Map<Long, Room> roomMap = new ConcurrentHashMap<>();
12+
13+
@Override
14+
public void saveRoom(Room room) {
15+
roomMap.put(room.getId(), room);
16+
}
17+
18+
//테스트 전용 메소드
19+
public Room getRoomForTest(Long roomId) {
20+
return roomMap.get(roomId);
21+
}
22+
23+
}

backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515

1616
class RoomRepositoryTests {
1717

18-
RoomRepository roomRepository;
18+
RoomRepositoryImpl roomRepository;
1919

2020
@BeforeEach
2121
void setUp() {
22-
roomRepository = new RoomRepository();
22+
roomRepository = new RoomRepositoryImpl();
2323
}
2424

2525
@Test
@@ -40,9 +40,13 @@ void saveRoom_test() {
4040
RoomSetting roomSetting = new RoomSetting(request.roomName(), request.maxUserCount(),
4141
request.locked(), request.password());
4242

43-
Long savedId = roomRepository.saveRoom(gameSetting,host,roomSetting);
43+
Long newId = 1L;
4444

45-
Room savedRoom = roomRepository.getRoomForTest(savedId);
45+
Room newRoom = new Room(newId, roomSetting, gameSetting, host);
46+
47+
roomRepository.saveRoom(newRoom);
48+
49+
Room savedRoom = roomRepository.getRoomForTest(newId);
4650

4751
assertThat(savedRoom.getHost().getId()).isEqualTo(loginUser.get("id"));
4852
assertThat(savedRoom.getHost().getNickname()).isEqualTo(loginUser.get("nickname"));

0 commit comments

Comments
 (0)