From 7d75568098289838b5ca7c38a07d4ecb6f5719a6 Mon Sep 17 00:00:00 2001 From: sehee Date: Fri, 11 Jul 2025 22:48:39 +0900 Subject: [PATCH 1/7] =?UTF-8?q?:sparkles:=20feat:=20=EA=B2=8C=EC=9E=84=20?= =?UTF-8?q?=EB=B0=A9=20=EC=83=9D=EC=84=B1=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/f1/backend/domain/game/Player.java | 12 ----- .../java/io/f1/backend/domain/game/Room.java | 27 ----------- .../f1/backend/domain/game/RoomManager.java | 8 ---- .../f1/backend/domain/game/RoomSetting.java | 3 -- .../domain/game/api/RoomController.java | 35 +++++++++++++++ .../backend/domain/game/app/RoomService.java | 19 ++++++++ .../game/dto/request/RoomCreateRequest.java | 11 +++++ .../game/{ => model}/ConnectionState.java | 2 +- .../domain/game/{ => model}/GameSetting.java | 7 ++- .../f1/backend/domain/game/model/Player.java | 23 ++++++++++ .../io/f1/backend/domain/game/model/Room.java | 40 +++++++++++++++++ .../domain/game/model/RoomSetting.java | 5 +++ .../domain/game/{ => model}/RoomState.java | 2 +- .../domain/game/store/RoomRepository.java | 42 +++++++++++++++++ .../game/store/RoomRepositoryTests.java | 45 +++++++++++++++++++ 15 files changed, 228 insertions(+), 53 deletions(-) delete mode 100644 backend/src/main/java/io/f1/backend/domain/game/Player.java delete mode 100644 backend/src/main/java/io/f1/backend/domain/game/Room.java delete mode 100644 backend/src/main/java/io/f1/backend/domain/game/RoomManager.java delete mode 100644 backend/src/main/java/io/f1/backend/domain/game/RoomSetting.java create mode 100644 backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java create mode 100644 backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java create mode 100644 backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java rename backend/src/main/java/io/f1/backend/domain/game/{ => model}/ConnectionState.java (61%) rename backend/src/main/java/io/f1/backend/domain/game/{ => model}/GameSetting.java (58%) create mode 100644 backend/src/main/java/io/f1/backend/domain/game/model/Player.java create mode 100644 backend/src/main/java/io/f1/backend/domain/game/model/Room.java create mode 100644 backend/src/main/java/io/f1/backend/domain/game/model/RoomSetting.java rename backend/src/main/java/io/f1/backend/domain/game/{ => model}/RoomState.java (61%) create mode 100644 backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java create mode 100644 backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java diff --git a/backend/src/main/java/io/f1/backend/domain/game/Player.java b/backend/src/main/java/io/f1/backend/domain/game/Player.java deleted file mode 100644 index e3fff7ab..00000000 --- a/backend/src/main/java/io/f1/backend/domain/game/Player.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.f1.backend.domain.game; - -public class Player { - - public String nickname; - - private boolean isReady = false; - - private ConnectionState state; - - private int correctCount = 0; -} diff --git a/backend/src/main/java/io/f1/backend/domain/game/Room.java b/backend/src/main/java/io/f1/backend/domain/game/Room.java deleted file mode 100644 index d5929f8c..00000000 --- a/backend/src/main/java/io/f1/backend/domain/game/Room.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.f1.backend.domain.game; - -import io.f1.backend.domain.question.entity.Question; - -import lombok.AllArgsConstructor; - -import java.time.LocalDateTime; -import java.util.List; -import java.util.Map; - -@AllArgsConstructor -public class Room { - - private final Long id; - - private final RoomSetting roomSetting; - private GameSetting gameSetting; - private RoomState state = RoomState.WAITING; - - private Player host; - - private List questions; - - private Map playerSessionMap; - - private final LocalDateTime createdAt = LocalDateTime.now(); -} diff --git a/backend/src/main/java/io/f1/backend/domain/game/RoomManager.java b/backend/src/main/java/io/f1/backend/domain/game/RoomManager.java deleted file mode 100644 index 099cff56..00000000 --- a/backend/src/main/java/io/f1/backend/domain/game/RoomManager.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.f1.backend.domain.game; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -public class RoomManager { - private final Map rooms = new ConcurrentHashMap<>(); -} diff --git a/backend/src/main/java/io/f1/backend/domain/game/RoomSetting.java b/backend/src/main/java/io/f1/backend/domain/game/RoomSetting.java deleted file mode 100644 index ebb441f8..00000000 --- a/backend/src/main/java/io/f1/backend/domain/game/RoomSetting.java +++ /dev/null @@ -1,3 +0,0 @@ -package io.f1.backend.domain.game; - -public record RoomSetting(String title, int maxUserCount, String password) {} diff --git a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java new file mode 100644 index 00000000..7498b424 --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java @@ -0,0 +1,35 @@ +package io.f1.backend.domain.game.api; + +import io.f1.backend.domain.game.app.RoomService; +import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import jakarta.validation.Valid; +import java.util.HashMap; +import java.util.Map; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + + +@RestController +@RequestMapping("/rooms") +@RequiredArgsConstructor +public class RoomController { + + private final RoomService roomService; + + @PostMapping + @ResponseStatus(HttpStatus.CREATED) + public Long saveRoom(@RequestBody @Valid RoomCreateRequest request) { + + Map loginUser = new HashMap<>(); + loginUser.put("id", 1L); + loginUser.put("nickname", "빵야빵야"); + + return roomService.saveRoom(request, loginUser); + } + +} diff --git a/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java new file mode 100644 index 00000000..0007a95e --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java @@ -0,0 +1,19 @@ +package io.f1.backend.domain.game.app; + +import io.f1.backend.domain.game.store.RoomRepository; +import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import java.util.Map; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class RoomService { + + private final RoomRepository roomRepository; + + public Long saveRoom(RoomCreateRequest request,Map loginUser) { + return roomRepository.saveRoom(request,loginUser); + } + +} diff --git a/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java b/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java new file mode 100644 index 00000000..c6520239 --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java @@ -0,0 +1,11 @@ +package io.f1.backend.domain.game.dto.request; + +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; + +public record RoomCreateRequest(@NotNull(message = "방 제목은 필수입니다.") String roomName, + @NotNull(message = "인원 수 입력은 필수입니다.") @Min(value = 2, message = "방 인원 수는 최소 2명 이상이어야합니다.") Integer maxUserCount, + String password, + boolean locked) { + +} diff --git a/backend/src/main/java/io/f1/backend/domain/game/ConnectionState.java b/backend/src/main/java/io/f1/backend/domain/game/model/ConnectionState.java similarity index 61% rename from backend/src/main/java/io/f1/backend/domain/game/ConnectionState.java rename to backend/src/main/java/io/f1/backend/domain/game/model/ConnectionState.java index 34c290e6..6ae6aa0c 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/ConnectionState.java +++ b/backend/src/main/java/io/f1/backend/domain/game/model/ConnectionState.java @@ -1,4 +1,4 @@ -package io.f1.backend.domain.game; +package io.f1.backend.domain.game.model; public enum ConnectionState { DISCONNECTED, diff --git a/backend/src/main/java/io/f1/backend/domain/game/GameSetting.java b/backend/src/main/java/io/f1/backend/domain/game/model/GameSetting.java similarity index 58% rename from backend/src/main/java/io/f1/backend/domain/game/GameSetting.java rename to backend/src/main/java/io/f1/backend/domain/game/model/GameSetting.java index 95167b32..7643d861 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/GameSetting.java +++ b/backend/src/main/java/io/f1/backend/domain/game/model/GameSetting.java @@ -1,5 +1,10 @@ -package io.f1.backend.domain.game; +package io.f1.backend.domain.game.model; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor public class GameSetting { private Long quizId; diff --git a/backend/src/main/java/io/f1/backend/domain/game/model/Player.java b/backend/src/main/java/io/f1/backend/domain/game/model/Player.java new file mode 100644 index 00000000..e5293318 --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/model/Player.java @@ -0,0 +1,23 @@ +package io.f1.backend.domain.game.model; + +import lombok.Getter; + +@Getter +public class Player { + + public final Long id; + + public final String nickname; + + private boolean isReady = false; + + private ConnectionState state = ConnectionState.CONNECTED; + + private int correctCount = 0; + + + public Player(Long id, String nickname) { + this.id = id; + this.nickname = nickname; + } +} diff --git a/backend/src/main/java/io/f1/backend/domain/game/model/Room.java b/backend/src/main/java/io/f1/backend/domain/game/model/Room.java new file mode 100644 index 00000000..ce2d2c6a --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/model/Room.java @@ -0,0 +1,40 @@ +package io.f1.backend.domain.game.model; + +import io.f1.backend.domain.question.entity.Question; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import lombok.Getter; + +@Getter +public class Room { + + private final Long id; + + private final RoomSetting roomSetting; + + private GameSetting gameSetting; + + private RoomState state = RoomState.WAITING; + + private Player host; + + private List questions = new ArrayList<>(); + + private Map playerSessionMap = new ConcurrentHashMap<>(); + + private final LocalDateTime createdAt = LocalDateTime.now(); + + + public Room(Long id, RoomSetting roomSetting, GameSetting gameSetting, + Player host) { + this.id = id; + this.roomSetting = roomSetting; + this.gameSetting = gameSetting; + this.host = host; + } + + +} diff --git a/backend/src/main/java/io/f1/backend/domain/game/model/RoomSetting.java b/backend/src/main/java/io/f1/backend/domain/game/model/RoomSetting.java new file mode 100644 index 00000000..801d993c --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/model/RoomSetting.java @@ -0,0 +1,5 @@ +package io.f1.backend.domain.game.model; + +public record RoomSetting(String roomName, int maxUserCount, boolean locked, String password) { + +} diff --git a/backend/src/main/java/io/f1/backend/domain/game/RoomState.java b/backend/src/main/java/io/f1/backend/domain/game/model/RoomState.java similarity index 61% rename from backend/src/main/java/io/f1/backend/domain/game/RoomState.java rename to backend/src/main/java/io/f1/backend/domain/game/model/RoomState.java index 4898c776..50d30dca 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/RoomState.java +++ b/backend/src/main/java/io/f1/backend/domain/game/model/RoomState.java @@ -1,4 +1,4 @@ -package io.f1.backend.domain.game; +package io.f1.backend.domain.game.model; public enum RoomState { WAITING, diff --git a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java new file mode 100644 index 00000000..217198c7 --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java @@ -0,0 +1,42 @@ +package io.f1.backend.domain.game.store; + +import io.f1.backend.domain.game.model.GameSetting; +import io.f1.backend.domain.game.model.Player; +import io.f1.backend.domain.game.model.Room; +import io.f1.backend.domain.game.model.RoomSetting; +import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; +import org.springframework.stereotype.Repository; + +@Repository +public class RoomRepository { + + private final Map rooms = new ConcurrentHashMap<>(); + private final AtomicLong roomIdGenerator = new AtomicLong(0); + + public Long saveRoom(RoomCreateRequest request, Map loginUser) { + Long newId = roomIdGenerator.incrementAndGet(); + + RoomSetting roomSetting = new RoomSetting(request.roomName(), request.maxUserCount(), + request.locked(), request.password()); + + //todo 제일 작은 index quizId 가져와서 gameSetting + GameSetting gameSetting = new GameSetting(1L, 10, 60); + + Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString()); + + Room newRoom = new Room(newId, roomSetting, gameSetting, host); + + rooms.put(newId, newRoom); + + return newId; + } + + //테스트 전용 메소드 + public Room getRoomForTest(Long roomId) { + return rooms.get(roomId); + } + +} \ No newline at end of file diff --git a/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java new file mode 100644 index 00000000..a2f91d13 --- /dev/null +++ b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java @@ -0,0 +1,45 @@ +package io.f1.backend.domain.game.store; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.f1.backend.domain.game.model.Room; +import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class RoomRepositoryTests { + + RoomRepository roomRepository; + + @BeforeEach + void setUp() { + roomRepository = new RoomRepository(); + } + + @Test + @DisplayName("게임 방 생성 테스트") + void saveRoom_test() { + + RoomCreateRequest request = new RoomCreateRequest("방제", 3, "password1", true); + Map loginUser = new HashMap<>(); + + loginUser.put("id", 1L); + loginUser.put("nickname", "빵야빵야"); + + Long savedId = roomRepository.saveRoom(request, loginUser); + + Room savedRoom = roomRepository.getRoomForTest(savedId); + + assertThat(savedRoom.getHost().getId()).isEqualTo(loginUser.get("id")); + assertThat(savedRoom.getHost().getNickname()).isEqualTo(loginUser.get("nickname")); + + assertThat(savedRoom.getRoomSetting().roomName()).isEqualTo(request.roomName()); + assertThat(savedRoom.getRoomSetting().maxUserCount()).isEqualTo(request.maxUserCount()); + assertThat(savedRoom.getRoomSetting().locked()).isEqualTo(request.locked()); + assertThat(savedRoom.getRoomSetting().password()).isEqualTo(request.password()); + } + +} \ No newline at end of file From 6eb0942e58aae66a39d0ffed12965edf0bdf4376 Mon Sep 17 00:00:00 2001 From: sehee Date: Sat, 12 Jul 2025 00:04:55 +0900 Subject: [PATCH 2/7] =?UTF-8?q?:sparkles:=20feat:=20repository,=20service?= =?UTF-8?q?=20=EC=B1=85=EC=9E=84=20=EB=B6=84=EB=A6=AC,=20mapper=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/domain/game/app/RoomService.java | 18 +++++++++++++++--- .../backend/domain/game/mapper/RoomMapper.java | 13 +++++++++++++ .../domain/game/store/RoomRepository.java | 15 ++------------- .../domain/game/store/RoomRepositoryTests.java | 13 ++++++++++++- 4 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java diff --git a/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java index 0007a95e..f16d2636 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java +++ b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java @@ -1,7 +1,12 @@ package io.f1.backend.domain.game.app; -import io.f1.backend.domain.game.store.RoomRepository; +import static io.f1.backend.domain.game.mapper.RoomMapper.toRoomSetting; + import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import io.f1.backend.domain.game.model.GameSetting; +import io.f1.backend.domain.game.model.Player; +import io.f1.backend.domain.game.model.RoomSetting; +import io.f1.backend.domain.game.store.RoomRepository; import java.util.Map; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -12,8 +17,15 @@ public class RoomService { private final RoomRepository roomRepository; - public Long saveRoom(RoomCreateRequest request,Map loginUser) { - return roomRepository.saveRoom(request,loginUser); + public Long saveRoom(RoomCreateRequest request, Map loginUser) { + + //todo 제일 작은 index quizId 가져와서 gameSetting + GameSetting gameSetting = new GameSetting(1L, 10, 60); + //todo security에서 가져오는걸로 변경 + Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString()); + RoomSetting roomSetting = toRoomSetting(request); + + return roomRepository.saveRoom(gameSetting, host, roomSetting); } } diff --git a/backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java b/backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java new file mode 100644 index 00000000..01d2d122 --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java @@ -0,0 +1,13 @@ +package io.f1.backend.domain.game.mapper; + +import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import io.f1.backend.domain.game.model.RoomSetting; + +public class RoomMapper { + + public static RoomSetting toRoomSetting(RoomCreateRequest request) { + return new RoomSetting(request.roomName(), request.maxUserCount(), + request.locked(), request.password()); + } + +} diff --git a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java index 217198c7..12a18be8 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java +++ b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java @@ -4,7 +4,6 @@ import io.f1.backend.domain.game.model.Player; import io.f1.backend.domain.game.model.Room; import io.f1.backend.domain.game.model.RoomSetting; -import io.f1.backend.domain.game.dto.request.RoomCreateRequest; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; @@ -16,20 +15,10 @@ public class RoomRepository { private final Map rooms = new ConcurrentHashMap<>(); private final AtomicLong roomIdGenerator = new AtomicLong(0); - public Long saveRoom(RoomCreateRequest request, Map loginUser) { + public Long saveRoom(GameSetting gameSetting, Player host, RoomSetting roomSetting) { Long newId = roomIdGenerator.incrementAndGet(); - RoomSetting roomSetting = new RoomSetting(request.roomName(), request.maxUserCount(), - request.locked(), request.password()); - - //todo 제일 작은 index quizId 가져와서 gameSetting - GameSetting gameSetting = new GameSetting(1L, 10, 60); - - Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString()); - - Room newRoom = new Room(newId, roomSetting, gameSetting, host); - - rooms.put(newId, newRoom); + rooms.put(newId, new Room(newId,roomSetting,gameSetting,host)); return newId; } diff --git a/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java index a2f91d13..1fb4588a 100644 --- a/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java +++ b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java @@ -2,8 +2,11 @@ import static org.assertj.core.api.Assertions.assertThat; +import io.f1.backend.domain.game.model.GameSetting; +import io.f1.backend.domain.game.model.Player; import io.f1.backend.domain.game.model.Room; import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import io.f1.backend.domain.game.model.RoomSetting; import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.BeforeEach; @@ -29,7 +32,15 @@ void saveRoom_test() { loginUser.put("id", 1L); loginUser.put("nickname", "빵야빵야"); - Long savedId = roomRepository.saveRoom(request, loginUser); + + GameSetting gameSetting = new GameSetting(1L, 10, 60); + + Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString()); + + RoomSetting roomSetting = new RoomSetting(request.roomName(), request.maxUserCount(), + request.locked(), request.password()); + + Long savedId = roomRepository.saveRoom(gameSetting,host,roomSetting); Room savedRoom = roomRepository.getRoomForTest(savedId); From 5697d6fefee6466c96347413d217f87b5244ad8a Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Fri, 11 Jul 2025 15:07:46 +0000 Subject: [PATCH 3/7] =?UTF-8?q?chore:=20Java=20=EC=8A=A4=ED=83=80=EC=9D=BC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/game/api/RoomController.java | 8 ++++--- .../backend/domain/game/app/RoomService.java | 10 +++++---- .../game/dto/request/RoomCreateRequest.java | 12 +++++----- .../domain/game/mapper/RoomMapper.java | 5 ++--- .../f1/backend/domain/game/model/Player.java | 1 - .../io/f1/backend/domain/game/model/Room.java | 10 ++++----- .../domain/game/model/RoomSetting.java | 4 +--- .../domain/game/store/RoomRepository.java | 11 +++++----- .../game/store/RoomRepositoryTests.java | 22 +++++++++++-------- 9 files changed, 43 insertions(+), 40 deletions(-) diff --git a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java index 7498b424..2c86772a 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java +++ b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java @@ -2,10 +2,11 @@ import io.f1.backend.domain.game.app.RoomService; import io.f1.backend.domain.game.dto.request.RoomCreateRequest; + import jakarta.validation.Valid; -import java.util.HashMap; -import java.util.Map; + import lombok.RequiredArgsConstructor; + import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -13,6 +14,8 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; +import java.util.Map; @RestController @RequestMapping("/rooms") @@ -31,5 +34,4 @@ public Long saveRoom(@RequestBody @Valid RoomCreateRequest request) { return roomService.saveRoom(request, loginUser); } - } diff --git a/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java index f16d2636..6b492ec6 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java +++ b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java @@ -7,10 +7,13 @@ import io.f1.backend.domain.game.model.Player; import io.f1.backend.domain.game.model.RoomSetting; import io.f1.backend.domain.game.store.RoomRepository; -import java.util.Map; + import lombok.RequiredArgsConstructor; + import org.springframework.stereotype.Service; +import java.util.Map; + @Service @RequiredArgsConstructor public class RoomService { @@ -19,13 +22,12 @@ public class RoomService { public Long saveRoom(RoomCreateRequest request, Map loginUser) { - //todo 제일 작은 index quizId 가져와서 gameSetting + // todo 제일 작은 index quizId 가져와서 gameSetting GameSetting gameSetting = new GameSetting(1L, 10, 60); - //todo security에서 가져오는걸로 변경 + // todo security에서 가져오는걸로 변경 Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString()); RoomSetting roomSetting = toRoomSetting(request); return roomRepository.saveRoom(gameSetting, host, roomSetting); } - } diff --git a/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java b/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java index c6520239..8f7d73f7 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java +++ b/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java @@ -3,9 +3,9 @@ import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotNull; -public record RoomCreateRequest(@NotNull(message = "방 제목은 필수입니다.") String roomName, - @NotNull(message = "인원 수 입력은 필수입니다.") @Min(value = 2, message = "방 인원 수는 최소 2명 이상이어야합니다.") Integer maxUserCount, - String password, - boolean locked) { - -} +public record RoomCreateRequest( + @NotNull(message = "방 제목은 필수입니다.") String roomName, + @NotNull(message = "인원 수 입력은 필수입니다.") @Min(value = 2, message = "방 인원 수는 최소 2명 이상이어야합니다.") + Integer maxUserCount, + String password, + boolean locked) {} diff --git a/backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java b/backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java index 01d2d122..648bb25d 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java +++ b/backend/src/main/java/io/f1/backend/domain/game/mapper/RoomMapper.java @@ -6,8 +6,7 @@ public class RoomMapper { public static RoomSetting toRoomSetting(RoomCreateRequest request) { - return new RoomSetting(request.roomName(), request.maxUserCount(), - request.locked(), request.password()); + return new RoomSetting( + request.roomName(), request.maxUserCount(), request.locked(), request.password()); } - } diff --git a/backend/src/main/java/io/f1/backend/domain/game/model/Player.java b/backend/src/main/java/io/f1/backend/domain/game/model/Player.java index e5293318..3d3230c1 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/model/Player.java +++ b/backend/src/main/java/io/f1/backend/domain/game/model/Player.java @@ -15,7 +15,6 @@ public class Player { private int correctCount = 0; - public Player(Long id, String nickname) { this.id = id; this.nickname = nickname; diff --git a/backend/src/main/java/io/f1/backend/domain/game/model/Room.java b/backend/src/main/java/io/f1/backend/domain/game/model/Room.java index ce2d2c6a..ba0c56b5 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/model/Room.java +++ b/backend/src/main/java/io/f1/backend/domain/game/model/Room.java @@ -1,12 +1,14 @@ package io.f1.backend.domain.game.model; import io.f1.backend.domain.question.entity.Question; + +import lombok.Getter; + import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import lombok.Getter; @Getter public class Room { @@ -27,14 +29,10 @@ public class Room { private final LocalDateTime createdAt = LocalDateTime.now(); - - public Room(Long id, RoomSetting roomSetting, GameSetting gameSetting, - Player host) { + public Room(Long id, RoomSetting roomSetting, GameSetting gameSetting, Player host) { this.id = id; this.roomSetting = roomSetting; this.gameSetting = gameSetting; this.host = host; } - - } diff --git a/backend/src/main/java/io/f1/backend/domain/game/model/RoomSetting.java b/backend/src/main/java/io/f1/backend/domain/game/model/RoomSetting.java index 801d993c..7cf6b985 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/model/RoomSetting.java +++ b/backend/src/main/java/io/f1/backend/domain/game/model/RoomSetting.java @@ -1,5 +1,3 @@ package io.f1.backend.domain.game.model; -public record RoomSetting(String roomName, int maxUserCount, boolean locked, String password) { - -} +public record RoomSetting(String roomName, int maxUserCount, boolean locked, String password) {} diff --git a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java index 12a18be8..6e74b561 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java +++ b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java @@ -4,10 +4,12 @@ import io.f1.backend.domain.game.model.Player; import io.f1.backend.domain.game.model.Room; import io.f1.backend.domain.game.model.RoomSetting; + +import org.springframework.stereotype.Repository; + import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; -import org.springframework.stereotype.Repository; @Repository public class RoomRepository { @@ -18,14 +20,13 @@ public class RoomRepository { public Long saveRoom(GameSetting gameSetting, Player host, RoomSetting roomSetting) { Long newId = roomIdGenerator.incrementAndGet(); - rooms.put(newId, new Room(newId,roomSetting,gameSetting,host)); + rooms.put(newId, new Room(newId, roomSetting, gameSetting, host)); return newId; } - //테스트 전용 메소드 + // 테스트 전용 메소드 public Room getRoomForTest(Long roomId) { return rooms.get(roomId); } - -} \ No newline at end of file +} diff --git a/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java index 1fb4588a..b24bf6fd 100644 --- a/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java +++ b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java @@ -2,17 +2,19 @@ import static org.assertj.core.api.Assertions.assertThat; +import io.f1.backend.domain.game.dto.request.RoomCreateRequest; import io.f1.backend.domain.game.model.GameSetting; import io.f1.backend.domain.game.model.Player; import io.f1.backend.domain.game.model.Room; -import io.f1.backend.domain.game.dto.request.RoomCreateRequest; import io.f1.backend.domain.game.model.RoomSetting; -import java.util.HashMap; -import java.util.Map; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import java.util.HashMap; +import java.util.Map; + class RoomRepositoryTests { RoomRepository roomRepository; @@ -32,15 +34,18 @@ void saveRoom_test() { loginUser.put("id", 1L); loginUser.put("nickname", "빵야빵야"); - GameSetting gameSetting = new GameSetting(1L, 10, 60); Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString()); - RoomSetting roomSetting = new RoomSetting(request.roomName(), request.maxUserCount(), - request.locked(), request.password()); + RoomSetting roomSetting = + new RoomSetting( + request.roomName(), + request.maxUserCount(), + request.locked(), + request.password()); - Long savedId = roomRepository.saveRoom(gameSetting,host,roomSetting); + Long savedId = roomRepository.saveRoom(gameSetting, host, roomSetting); Room savedRoom = roomRepository.getRoomForTest(savedId); @@ -52,5 +57,4 @@ void saveRoom_test() { assertThat(savedRoom.getRoomSetting().locked()).isEqualTo(request.locked()); assertThat(savedRoom.getRoomSetting().password()).isEqualTo(request.password()); } - -} \ No newline at end of file +} From 797ed65ee20fec654b0a64581222d82186ec576b Mon Sep 17 00:00:00 2001 From: sehee Date: Sat, 12 Jul 2025 15:39:59 +0900 Subject: [PATCH 4/7] =?UTF-8?q?:recycle:=20=EB=A6=AC=EB=B7=B0=20=EB=B0=98?= =?UTF-8?q?=EC=98=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/game/api/RoomController.java | 3 +- .../backend/domain/game/app/RoomService.java | 14 +++++++-- .../game/dto/request/RoomCreateRequest.java | 10 ++++--- .../game/dto/response/RoomCreateResponse.java | 6 ++++ .../domain/game/store/RoomRepository.java | 30 ++----------------- .../domain/game/store/RoomRepositoryImpl.java | 23 ++++++++++++++ .../game/store/RoomRepositoryTests.java | 12 +++++--- 7 files changed, 59 insertions(+), 39 deletions(-) create mode 100644 backend/src/main/java/io/f1/backend/domain/game/dto/response/RoomCreateResponse.java create mode 100644 backend/src/main/java/io/f1/backend/domain/game/store/RoomRepositoryImpl.java diff --git a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java index 7498b424..7fae8a94 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java +++ b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java @@ -2,6 +2,7 @@ import io.f1.backend.domain.game.app.RoomService; import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import io.f1.backend.domain.game.dto.response.RoomCreateResponse; import jakarta.validation.Valid; import java.util.HashMap; import java.util.Map; @@ -23,7 +24,7 @@ public class RoomController { @PostMapping @ResponseStatus(HttpStatus.CREATED) - public Long saveRoom(@RequestBody @Valid RoomCreateRequest request) { + public RoomCreateResponse saveRoom(@RequestBody @Valid RoomCreateRequest request) { Map loginUser = new HashMap<>(); loginUser.put("id", 1L); diff --git a/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java index f16d2636..08a073de 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java +++ b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java @@ -3,11 +3,14 @@ import static io.f1.backend.domain.game.mapper.RoomMapper.toRoomSetting; import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import io.f1.backend.domain.game.dto.response.RoomCreateResponse; import io.f1.backend.domain.game.model.GameSetting; import io.f1.backend.domain.game.model.Player; +import io.f1.backend.domain.game.model.Room; import io.f1.backend.domain.game.model.RoomSetting; import io.f1.backend.domain.game.store.RoomRepository; import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -16,16 +19,21 @@ public class RoomService { private final RoomRepository roomRepository; + private final AtomicLong roomIdGenerator = new AtomicLong(0); - public Long saveRoom(RoomCreateRequest request, Map loginUser) { + public RoomCreateResponse saveRoom(RoomCreateRequest request, Map loginUser) { - //todo 제일 작은 index quizId 가져와서 gameSetting + //todo 제일 작은 index quizId 가져와서 gameSetting(round 설정) GameSetting gameSetting = new GameSetting(1L, 10, 60); //todo security에서 가져오는걸로 변경 Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString()); RoomSetting roomSetting = toRoomSetting(request); - return roomRepository.saveRoom(gameSetting, host, roomSetting); + Long newId = roomIdGenerator.incrementAndGet(); + + roomRepository.saveRoom(new Room(newId,roomSetting,gameSetting,host)); + + return new RoomCreateResponse(newId); } } diff --git a/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java b/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java index c6520239..78b9692e 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java +++ b/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java @@ -1,11 +1,13 @@ package io.f1.backend.domain.game.dto.request; +import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; -public record RoomCreateRequest(@NotNull(message = "방 제목은 필수입니다.") String roomName, - @NotNull(message = "인원 수 입력은 필수입니다.") @Min(value = 2, message = "방 인원 수는 최소 2명 이상이어야합니다.") Integer maxUserCount, - String password, - boolean locked) { +public record RoomCreateRequest(@NotBlank(message = "방 제목은 필수입니다.") String roomName, + @NotNull(message = "인원 수 입력은 필수입니다.") @Min(value = 2, message = "방 인원 수는 최소 2명입니다.") @Max(value = 8, message = "방 인원 수는 최대 8명 입니다.") Integer maxUserCount, + @NotNull String password, + @NotNull boolean locked) { } diff --git a/backend/src/main/java/io/f1/backend/domain/game/dto/response/RoomCreateResponse.java b/backend/src/main/java/io/f1/backend/domain/game/dto/response/RoomCreateResponse.java new file mode 100644 index 00000000..c1900c0e --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/dto/response/RoomCreateResponse.java @@ -0,0 +1,6 @@ +package io.f1.backend.domain.game.dto.response; + +public record RoomCreateResponse(Long roomId) { + +} + diff --git a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java index 12a18be8..d03aab93 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java +++ b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepository.java @@ -1,31 +1,7 @@ package io.f1.backend.domain.game.store; -import io.f1.backend.domain.game.model.GameSetting; -import io.f1.backend.domain.game.model.Player; import io.f1.backend.domain.game.model.Room; -import io.f1.backend.domain.game.model.RoomSetting; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicLong; -import org.springframework.stereotype.Repository; -@Repository -public class RoomRepository { - - private final Map rooms = new ConcurrentHashMap<>(); - private final AtomicLong roomIdGenerator = new AtomicLong(0); - - public Long saveRoom(GameSetting gameSetting, Player host, RoomSetting roomSetting) { - Long newId = roomIdGenerator.incrementAndGet(); - - rooms.put(newId, new Room(newId,roomSetting,gameSetting,host)); - - return newId; - } - - //테스트 전용 메소드 - public Room getRoomForTest(Long roomId) { - return rooms.get(roomId); - } - -} \ No newline at end of file +public interface RoomRepository { + void saveRoom(Room room); +} diff --git a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepositoryImpl.java b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepositoryImpl.java new file mode 100644 index 00000000..ea4442ff --- /dev/null +++ b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepositoryImpl.java @@ -0,0 +1,23 @@ +package io.f1.backend.domain.game.store; + +import io.f1.backend.domain.game.model.Room; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import org.springframework.stereotype.Repository; + +@Repository +public class RoomRepositoryImpl implements RoomRepository { + + private final Map roomMap = new ConcurrentHashMap<>(); + + @Override + public void saveRoom(Room room) { + roomMap.put(room.getId(), room); + } + + //테스트 전용 메소드 + public Room getRoomForTest(Long roomId) { + return roomMap.get(roomId); + } + +} \ No newline at end of file diff --git a/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java index 1fb4588a..e40cf899 100644 --- a/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java +++ b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java @@ -15,11 +15,11 @@ class RoomRepositoryTests { - RoomRepository roomRepository; + RoomRepositoryImpl roomRepository; @BeforeEach void setUp() { - roomRepository = new RoomRepository(); + roomRepository = new RoomRepositoryImpl(); } @Test @@ -40,9 +40,13 @@ void saveRoom_test() { RoomSetting roomSetting = new RoomSetting(request.roomName(), request.maxUserCount(), request.locked(), request.password()); - Long savedId = roomRepository.saveRoom(gameSetting,host,roomSetting); + Long newId = 1L; - Room savedRoom = roomRepository.getRoomForTest(savedId); + Room newRoom = new Room(newId, roomSetting, gameSetting, host); + + roomRepository.saveRoom(newRoom); + + Room savedRoom = roomRepository.getRoomForTest(newId); assertThat(savedRoom.getHost().getId()).isEqualTo(loginUser.get("id")); assertThat(savedRoom.getHost().getNickname()).isEqualTo(loginUser.get("nickname")); From 07f6413bab0772a929b459e5d8fddc0be02afd4e Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Sat, 12 Jul 2025 06:49:27 +0000 Subject: [PATCH 5/7] =?UTF-8?q?chore:=20Java=20=EC=8A=A4=ED=83=80=EC=9D=BC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/game/api/RoomController.java | 8 +++++--- .../backend/domain/game/app/RoomService.java | 14 +++++++------ .../game/dto/request/RoomCreateRequest.java | 14 +++++++------ .../game/dto/response/RoomCreateResponse.java | 5 +---- .../domain/game/store/RoomRepositoryImpl.java | 9 +++++---- .../game/store/RoomRepositoryTests.java | 20 +++++++++++-------- 6 files changed, 39 insertions(+), 31 deletions(-) diff --git a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java index 0fa7c10c..e9f455e6 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java +++ b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java @@ -2,10 +2,11 @@ import io.f1.backend.domain.game.app.RoomService; import io.f1.backend.domain.game.dto.request.RoomCreateRequest; + import jakarta.validation.Valid; -import java.util.HashMap; -import java.util.Map; + import lombok.RequiredArgsConstructor; + import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -13,6 +14,8 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; +import java.util.Map; @RestController @RequestMapping("/rooms") @@ -31,5 +34,4 @@ public RoomCreateResponse saveRoom(@RequestBody @Valid RoomCreateRequest request return roomService.saveRoom(request, loginUser); } - } diff --git a/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java index 08a073de..14c44f85 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java +++ b/backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java @@ -9,11 +9,14 @@ import io.f1.backend.domain.game.model.Room; import io.f1.backend.domain.game.model.RoomSetting; import io.f1.backend.domain.game.store.RoomRepository; -import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; + import lombok.RequiredArgsConstructor; + import org.springframework.stereotype.Service; +import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; + @Service @RequiredArgsConstructor public class RoomService { @@ -23,17 +26,16 @@ public class RoomService { public RoomCreateResponse saveRoom(RoomCreateRequest request, Map loginUser) { - //todo 제일 작은 index quizId 가져와서 gameSetting(round 설정) + // todo 제일 작은 index quizId 가져와서 gameSetting(round 설정) GameSetting gameSetting = new GameSetting(1L, 10, 60); - //todo security에서 가져오는걸로 변경 + // todo security에서 가져오는걸로 변경 Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString()); RoomSetting roomSetting = toRoomSetting(request); Long newId = roomIdGenerator.incrementAndGet(); - roomRepository.saveRoom(new Room(newId,roomSetting,gameSetting,host)); + roomRepository.saveRoom(new Room(newId, roomSetting, gameSetting, host)); return new RoomCreateResponse(newId); } - } diff --git a/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java b/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java index 78b9692e..30a94481 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java +++ b/backend/src/main/java/io/f1/backend/domain/game/dto/request/RoomCreateRequest.java @@ -5,9 +5,11 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; -public record RoomCreateRequest(@NotBlank(message = "방 제목은 필수입니다.") String roomName, - @NotNull(message = "인원 수 입력은 필수입니다.") @Min(value = 2, message = "방 인원 수는 최소 2명입니다.") @Max(value = 8, message = "방 인원 수는 최대 8명 입니다.") Integer maxUserCount, - @NotNull String password, - @NotNull boolean locked) { - -} +public record RoomCreateRequest( + @NotBlank(message = "방 제목은 필수입니다.") String roomName, + @NotNull(message = "인원 수 입력은 필수입니다.") + @Min(value = 2, message = "방 인원 수는 최소 2명입니다.") + @Max(value = 8, message = "방 인원 수는 최대 8명 입니다.") + Integer maxUserCount, + @NotNull String password, + @NotNull boolean locked) {} diff --git a/backend/src/main/java/io/f1/backend/domain/game/dto/response/RoomCreateResponse.java b/backend/src/main/java/io/f1/backend/domain/game/dto/response/RoomCreateResponse.java index c1900c0e..042545a7 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/dto/response/RoomCreateResponse.java +++ b/backend/src/main/java/io/f1/backend/domain/game/dto/response/RoomCreateResponse.java @@ -1,6 +1,3 @@ package io.f1.backend.domain.game.dto.response; -public record RoomCreateResponse(Long roomId) { - -} - +public record RoomCreateResponse(Long roomId) {} diff --git a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepositoryImpl.java b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepositoryImpl.java index ea4442ff..132e0d9e 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepositoryImpl.java +++ b/backend/src/main/java/io/f1/backend/domain/game/store/RoomRepositoryImpl.java @@ -1,9 +1,11 @@ package io.f1.backend.domain.game.store; import io.f1.backend.domain.game.model.Room; + +import org.springframework.stereotype.Repository; + import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import org.springframework.stereotype.Repository; @Repository public class RoomRepositoryImpl implements RoomRepository { @@ -15,9 +17,8 @@ public void saveRoom(Room room) { roomMap.put(room.getId(), room); } - //테스트 전용 메소드 + // 테스트 전용 메소드 public Room getRoomForTest(Long roomId) { return roomMap.get(roomId); } - -} \ No newline at end of file +} diff --git a/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java index e40cf899..81067624 100644 --- a/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java +++ b/backend/src/test/java/io/f1/backend/domain/game/store/RoomRepositoryTests.java @@ -2,17 +2,19 @@ import static org.assertj.core.api.Assertions.assertThat; +import io.f1.backend.domain.game.dto.request.RoomCreateRequest; import io.f1.backend.domain.game.model.GameSetting; import io.f1.backend.domain.game.model.Player; import io.f1.backend.domain.game.model.Room; -import io.f1.backend.domain.game.dto.request.RoomCreateRequest; import io.f1.backend.domain.game.model.RoomSetting; -import java.util.HashMap; -import java.util.Map; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import java.util.HashMap; +import java.util.Map; + class RoomRepositoryTests { RoomRepositoryImpl roomRepository; @@ -32,13 +34,16 @@ void saveRoom_test() { loginUser.put("id", 1L); loginUser.put("nickname", "빵야빵야"); - GameSetting gameSetting = new GameSetting(1L, 10, 60); Player host = new Player((Long) loginUser.get("id"), loginUser.get("nickname").toString()); - RoomSetting roomSetting = new RoomSetting(request.roomName(), request.maxUserCount(), - request.locked(), request.password()); + RoomSetting roomSetting = + new RoomSetting( + request.roomName(), + request.maxUserCount(), + request.locked(), + request.password()); Long newId = 1L; @@ -56,5 +61,4 @@ void saveRoom_test() { assertThat(savedRoom.getRoomSetting().locked()).isEqualTo(request.locked()); assertThat(savedRoom.getRoomSetting().password()).isEqualTo(request.password()); } - -} \ No newline at end of file +} From 2924c0c322948b341af9a3175969994f9f49351e Mon Sep 17 00:00:00 2001 From: sehee Date: Sat, 12 Jul 2025 16:08:21 +0900 Subject: [PATCH 6/7] =?UTF-8?q?:adhesive=5Fbandage:=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC=20import=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/f1/backend/domain/game/api/RoomController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java index 0fa7c10c..7fae8a94 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java +++ b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java @@ -2,6 +2,7 @@ import io.f1.backend.domain.game.app.RoomService; import io.f1.backend.domain.game.dto.request.RoomCreateRequest; +import io.f1.backend.domain.game.dto.response.RoomCreateResponse; import jakarta.validation.Valid; import java.util.HashMap; import java.util.Map; From abbf606718f9026e467c7246a684b15a0997783b Mon Sep 17 00:00:00 2001 From: github-actions <> Date: Sat, 12 Jul 2025 07:09:31 +0000 Subject: [PATCH 7/7] =?UTF-8?q?chore:=20Java=20=EC=8A=A4=ED=83=80=EC=9D=BC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/f1/backend/domain/game/api/RoomController.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java index 7fae8a94..a276b9d1 100644 --- a/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java +++ b/backend/src/main/java/io/f1/backend/domain/game/api/RoomController.java @@ -3,10 +3,11 @@ import io.f1.backend.domain.game.app.RoomService; import io.f1.backend.domain.game.dto.request.RoomCreateRequest; import io.f1.backend.domain.game.dto.response.RoomCreateResponse; + import jakarta.validation.Valid; -import java.util.HashMap; -import java.util.Map; + import lombok.RequiredArgsConstructor; + import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -14,6 +15,8 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; +import java.util.Map; @RestController @RequestMapping("/rooms") @@ -32,5 +35,4 @@ public RoomCreateResponse saveRoom(@RequestBody @Valid RoomCreateRequest request return roomService.saveRoom(request, loginUser); } - }