Class RoomService

java.lang.Object
com.example.chessdotnet.service.RoomService

@Service public class RoomService extends Object
체스 게임 방 관련 비즈니스 로직을 처리하는 서비스 클래스입니다.
Author:
전종영
  • Constructor Details

    • RoomService

      public RoomService()
  • Method Details

    • createRoom

      public RoomDTO createRoom(String title, Long creatorId)
      새로운 방을 생성합니다.
      Parameters:
      title - 생성할 방의 제목
      creatorId - 방을 생성하는 사용자의 ID
      Returns:
      생성된 Room의 DTO
      Throws:
      UserNotFoundException - 지정된 ID의 사용자를 찾을 수 없는 경우
    • joinRoom

      public RoomDTO joinRoom(Long roomId, Long userId)
      사용자가 특정 게임 방에 참여합니다.
      Parameters:
      roomId - 참여할 방의 ID
      userId - 참여하는 사용자의 ID
      Returns:
      업데이트된 Room의 DTO
      Throws:
      RoomNotFoundException - 방을 찾을 수 없을 때 발생
      UserNotFoundException - 사용자를 찾을 수 없을 때 발생
    • getAvailableRooms

      public List<RoomDTO> getAvailableRooms()
      사용 가능한 (게임이 시작되지 않은) 모든 방의 목록을 반환합니다.
      Returns:
      사용 가능한 방들의 DTO 리스트
    • leaveRoom

      @Transactional public RoomDTO leaveRoom(Long roomId, Long userId)
      사용자가 방을 나가는 기능을 처리합니다.
      Parameters:
      roomId - 나가려는 방의 ID
      userId - 나가려는 사용자의 ID
      Returns:
      업데이트된 방 정보. 방이 삭제된 경우 null을 반환
      Throws:
      RoomNotFoundException - 지정된 ID의 방을 찾을 수 없는 경우
      UserNotFoundException - 지정된 ID의 사용자를 찾을 수 없는 경우
      UserNotInRoomException - 사용자가 해당 방에 없는 경우
    • deleteRoom

      @Transactional public void deleteRoom(Long roomId, Long userId)
      방을 삭제하는 기능을 처리합니다.
      Parameters:
      roomId - 삭제할 방의 ID
      userId - 삭제를 요청한 사용자의 ID
      Throws:
      RoomNotFoundException - 지정된 ID의 방을 찾을 수 없는 경우
      UserNotFoundException - 지정된 ID의 사용자를 찾을 수 없는 경우
      IllegalStateException - 방 생성자가 아닌 사용자가 삭제를 시도하는 경우