Skip to content

Commit

Permalink
Merge pull request #123 from HandTris/#122
Browse files Browse the repository at this point in the history
GameRoom λ„λ©”μΈμ˜ GameStatus ν•„λ“œ μ‚­μ œ
  • Loading branch information
forrest1398 authored Jul 10, 2024
2 parents 74b1dd5 + fe5631f commit 74da7e2
Show file tree
Hide file tree
Showing 6 changed files with 6 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@
import jungle.HandTris.application.service.MemberProfileService;
import jungle.HandTris.domain.GameMember;
import jungle.HandTris.domain.GameRoom;
import jungle.HandTris.domain.GameStatus;
import jungle.HandTris.domain.exception.GameRoomNotFoundException;
import jungle.HandTris.domain.exception.MemberNotFoundException;
import jungle.HandTris.domain.exception.ParticipantLimitedException;
import jungle.HandTris.domain.exception.PlayingGameException;
import jungle.HandTris.domain.repo.GameRoomRepository;
import jungle.HandTris.global.validation.UserNicknameFromJwt;
import jungle.HandTris.presentation.dto.request.GameMemberEssentialDTO;
Expand All @@ -23,7 +21,6 @@
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;
import java.util.UUID;


Expand All @@ -42,16 +39,6 @@ public List<GameRoom> getGameRoomList() {
return gameRoomRepository.findAllByGameStatusNotPlaying();
}

@Override
public GameMember getGameRoom(String roomCode) {
String gameRoomKey = GAME_MEMBER_KEY_PREFIX + roomCode;
String gameMemberGen = redisTemplate.opsForValue().get(gameRoomKey);

GameMember gameMember = generateGameMember(gameMemberGen);

return gameMember;
}

@Override
public UUID createGameRoom(@UserNicknameFromJwt String nickname, GameRoomDetailReq gameRoomDetailReq) {
GameRoom createdGameRoom = new GameRoom(nickname, gameRoomDetailReq.title());
Expand All @@ -70,10 +57,6 @@ public UUID createGameRoom(@UserNicknameFromJwt String nickname, GameRoomDetailR
public GameRoom enterGameRoom(@UserNicknameFromJwt String nickname, String roomCode) {
GameRoom gameRoom = gameRoomRepository.findByRoomCode(UUID.fromString(roomCode)).orElseThrow(GameRoomNotFoundException::new);

if (gameRoom.getGameStatus() == GameStatus.PLAYING) {
throw new PlayingGameException();
}

Pair<String, MemberRecordDetailRes> memberDetails = memberProfileService.getMemberProfileWithStatsByNickname(nickname);

if (gameRoom.getParticipantCount() == gameRoom.getParticipantLimit()) {
Expand All @@ -83,7 +66,6 @@ public GameRoom enterGameRoom(@UserNicknameFromJwt String nickname, String roomC
gameRoom.enter();

// Redis에 맀핑 정보 μ—…λ°μ΄νŠΈ
System.out.println(GAME_MEMBER_KEY_PREFIX + roomCode);
String gameKey = GAME_MEMBER_KEY_PREFIX + roomCode;
String gameMemberGen = redisTemplate.opsForValue().get(gameKey);
GameMember gameMember = generateGameMember(gameMemberGen);
Expand All @@ -98,9 +80,6 @@ public GameRoom exitGameRoom(@UserNicknameFromJwt String nickname, String roomCo
GameRoom gameRoom = gameRoomRepository.findByRoomCode(UUID.fromString(roomCode))
.orElseThrow(GameRoomNotFoundException::new);

if (gameRoom.getGameStatus() == GameStatus.PLAYING) {
throw new PlayingGameException();
}
gameRoom.exit();

String key = GAME_MEMBER_KEY_PREFIX + roomCode;
Expand Down Expand Up @@ -144,12 +123,4 @@ private GameMember generateGameMember(String gameMemberGen) {
}
throw new MemberNotFoundException();
}

@Override
public boolean isGameRoomPlaying(String roomCode) {
Optional<GameRoom> foundGameRoom = gameRoomRepository.findByRoomCode(UUID.fromString(roomCode));
if (foundGameRoom.isEmpty())
throw new GameRoomNotFoundException();
return GameStatus.PLAYING.equals(foundGameRoom.get().getGameStatus());
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package jungle.HandTris.application.service;

import jungle.HandTris.domain.GameMember;
import jungle.HandTris.domain.GameRoom;
import jungle.HandTris.global.validation.UserNicknameFromJwt;
import jungle.HandTris.presentation.dto.request.GameRoomDetailReq;
Expand All @@ -11,13 +10,10 @@
public interface GameRoomService {
List<GameRoom> getGameRoomList();

GameMember getGameRoom(String roomCode);

UUID createGameRoom(@UserNicknameFromJwt String nickname, GameRoomDetailReq gameRoomDetailReq);

GameRoom enterGameRoom(@UserNicknameFromJwt String nickname, String roomCode);

GameRoom exitGameRoom(@UserNicknameFromJwt String nickname, String roomCode);

boolean isGameRoomPlaying(String roomCode);
}
5 changes: 0 additions & 5 deletions src/main/java/jungle/HandTris/domain/GameRoom.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,12 @@ public class GameRoom {
@Column(nullable = false)
private UUID roomCode;

@Column(nullable = false)
@Enumerated(value = EnumType.STRING)
private GameStatus gameStatus;

public GameRoom(String creator, String title) {
this.title = title;
this.creator = creator;
this.participantCount = 1;
this.participantLimit = 2;
this.roomCode = UUID.randomUUID();
this.gameStatus = GameStatus.NON_PLAYING;
}

public void enter() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

public interface GameRoomRepository extends Repository<GameRoom, Long> {

@Query("SELECT g FROM GameRoom g WHERE g.participantCount < g.participantLimit AND g.gameStatus != 'PLAYING' ")
@Query("SELECT g FROM GameRoom g WHERE g.participantCount < g.participantLimit")
List<GameRoom> findAllByGameStatusNotPlaying();

Optional<GameRoom> findById(Long id);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,22 @@
package jungle.HandTris.presentation.dto.response;

import jungle.HandTris.domain.GameRoom;
import jungle.HandTris.domain.GameStatus;

import java.util.UUID;

public record GameRoomDetailRes(
long id,
String title,
String creator,
long participantCount,
long participantLimit,
UUID roomCode,
GameStatus gameStatus
UUID roomCode
) {
public GameRoomDetailRes(GameRoom gameRoom) {
this(gameRoom.getId(),
this(
gameRoom.getTitle(),
gameRoom.getCreator(),
gameRoom.getParticipantCount(),
gameRoom.getParticipantLimit(),
gameRoom.getRoomCode(),
gameRoom.getGameStatus());
gameRoom.getRoomCode());
}
}
2 changes: 2 additions & 0 deletions src/main/resources/db/migration/V3__delete_game_status.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER table game_room
DROP COLUMN game_status;

0 comments on commit 74da7e2

Please sign in to comment.