From 2105efec5ef637b67830f07d62d4c72774e8b031 Mon Sep 17 00:00:00 2001 From: yxhwxn Date: Fri, 28 Feb 2025 20:29:48 +0900 Subject: [PATCH 1/4] =?UTF-8?q?Feat:=20=ED=98=84=EC=9E=AC=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=EC=A4=91=EC=9D=B8=20=EC=BD=94=EB=93=9C=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../room/controller/RoomController.java | 16 ++++++++++ .../dto/CurrentSessionRequestDTO.java | 15 ++++++++++ .../dto/CurrentSessionResponseDTO.java | 21 ++++++++++++++ .../codeshare/room/domain/CurrentSession.java | 28 ++++++++++++++++++ .../repository/CurrentSessionRepository.java | 12 ++++++++ .../codeshare/room/service/RoomService.java | 29 +++++++++++++++++++ 6 files changed, 121 insertions(+) create mode 100644 src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionRequestDTO.java create mode 100644 src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionResponseDTO.java create mode 100644 src/main/java/com/woori/codeshare/room/domain/CurrentSession.java create mode 100644 src/main/java/com/woori/codeshare/room/repository/CurrentSessionRepository.java diff --git a/src/main/java/com/woori/codeshare/room/controller/RoomController.java b/src/main/java/com/woori/codeshare/room/controller/RoomController.java index c32dac3..89fef7d 100644 --- a/src/main/java/com/woori/codeshare/room/controller/RoomController.java +++ b/src/main/java/com/woori/codeshare/room/controller/RoomController.java @@ -2,6 +2,8 @@ import com.woori.codeshare.global.response.ApiResponse; import com.woori.codeshare.global.response.ResponseCode; +import com.woori.codeshare.room.controller.dto.CurrentSessionRequestDTO; +import com.woori.codeshare.room.controller.dto.CurrentSessionResponseDTO; import com.woori.codeshare.room.controller.dto.RoomRequestDTO; import com.woori.codeshare.room.controller.dto.RoomResponseDTO; import com.woori.codeshare.room.service.RoomService; @@ -54,5 +56,19 @@ public ResponseEntity> enterRoom( RoomResponseDTO.RoomEnterResponse responseDTO = roomService.enterRoomByUuid(uuid, password); return ResponseEntity.ok(ApiResponse.of(ResponseCode.CONFIRM, responseDTO)); } + + /** + * 현재 코드 세션 저장 API + */ + @PostMapping("/{roomId}/current-session/save") + @Operation(summary = "현재 코드 세션 저장 API", description = "특정 방의 실시간 코드 내용을 저장합니다.") + public ResponseEntity> saveCurrentSession( + @PathVariable Long roomId, + @RequestBody CurrentSessionRequestDTO.CurrentSessionRequest request) { + + CurrentSessionResponseDTO.CurrentSessionResponse response = roomService.saveCurrentSession(roomId, request); + return ResponseEntity.ok(ApiResponse.of(ResponseCode.SUCCESS, response)); + } + } diff --git a/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionRequestDTO.java b/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionRequestDTO.java new file mode 100644 index 0000000..83cd310 --- /dev/null +++ b/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionRequestDTO.java @@ -0,0 +1,15 @@ +package com.woori.codeshare.room.controller.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +public class CurrentSessionRequestDTO { + + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class CurrentSessionRequest { + private String code; + } +} diff --git a/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionResponseDTO.java b/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionResponseDTO.java new file mode 100644 index 0000000..c658d18 --- /dev/null +++ b/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionResponseDTO.java @@ -0,0 +1,21 @@ +package com.woori.codeshare.room.controller.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +public class CurrentSessionResponseDTO { + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class CurrentSessionResponse { + private Long roomId; + private String code; + private LocalDateTime updatedAt; + } +} diff --git a/src/main/java/com/woori/codeshare/room/domain/CurrentSession.java b/src/main/java/com/woori/codeshare/room/domain/CurrentSession.java new file mode 100644 index 0000000..e1d18c2 --- /dev/null +++ b/src/main/java/com/woori/codeshare/room/domain/CurrentSession.java @@ -0,0 +1,28 @@ +package com.woori.codeshare.room.domain; + +import com.woori.codeshare.global.config.BaseDateTimeEntity; +import jakarta.persistence.*; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@Data +@NoArgsConstructor +public class CurrentSession extends BaseDateTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @OneToOne + @JoinColumn(name = "room_id", nullable = false) + private Room room; + + @Lob + private String code; + + public CurrentSession(Room room) { + this.room = room; + this.code = ""; + } +} diff --git a/src/main/java/com/woori/codeshare/room/repository/CurrentSessionRepository.java b/src/main/java/com/woori/codeshare/room/repository/CurrentSessionRepository.java new file mode 100644 index 0000000..c7d249a --- /dev/null +++ b/src/main/java/com/woori/codeshare/room/repository/CurrentSessionRepository.java @@ -0,0 +1,12 @@ +package com.woori.codeshare.room.repository; + +import com.woori.codeshare.room.domain.CurrentSession; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface CurrentSessionRepository extends JpaRepository { + Optional findByRoom_RoomId(Long roomId); +} diff --git a/src/main/java/com/woori/codeshare/room/service/RoomService.java b/src/main/java/com/woori/codeshare/room/service/RoomService.java index 54a681e..c4a34f2 100644 --- a/src/main/java/com/woori/codeshare/room/service/RoomService.java +++ b/src/main/java/com/woori/codeshare/room/service/RoomService.java @@ -1,12 +1,17 @@ package com.woori.codeshare.room.service; +import com.woori.codeshare.room.controller.dto.CurrentSessionRequestDTO; +import com.woori.codeshare.room.controller.dto.CurrentSessionResponseDTO; import com.woori.codeshare.room.controller.dto.RoomRequestDTO; import com.woori.codeshare.room.controller.dto.RoomResponseDTO; +import com.woori.codeshare.room.domain.CurrentSession; import com.woori.codeshare.room.domain.Room; import com.woori.codeshare.room.exception.RoomErrorCode; import com.woori.codeshare.room.exception.RoomException; +import com.woori.codeshare.room.repository.CurrentSessionRepository; import com.woori.codeshare.room.repository.RoomRepository; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; @@ -18,6 +23,7 @@ public class RoomService { private final RoomRepository roomRepository; + private final CurrentSessionRepository currentSessionRepository; private final BCryptPasswordEncoder passwordEncoder; /** @@ -76,5 +82,28 @@ public RoomResponseDTO.RoomEnterResponse enterRoomByUuid(String uuid, String raw .createdAt(room.getCreatedAt()) .build(); } + + /** + * 현재 코드 세션 저장 + */ + @Transactional + public CurrentSessionResponseDTO.CurrentSessionResponse saveCurrentSession(Long roomId, CurrentSessionRequestDTO.CurrentSessionRequest request) { + Room room = roomRepository.findById(roomId) + .orElseThrow(() -> new RoomException(RoomErrorCode.ROOM_NOT_FOUND)); + + // 기존 CurrentSession이 존재하면 업데이트, 없으면 새로 생성 + CurrentSession currentSession = currentSessionRepository.findByRoom_RoomId(roomId) + .orElse(new CurrentSession(room)); + + currentSession.setCode(request.getCode()); + currentSessionRepository.save(currentSession); + + return CurrentSessionResponseDTO.CurrentSessionResponse.builder() + .roomId(roomId) + .code(currentSession.getCode()) + .updatedAt(currentSession.getUpdatedAt()) + .build(); + } + } From 611755d1a91eb70d51f66b7366e373db452488de Mon Sep 17 00:00:00 2001 From: yxhwxn Date: Fri, 28 Feb 2025 20:32:02 +0900 Subject: [PATCH 2/4] =?UTF-8?q?Feat:=20Live=20Session=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../room/controller/RoomController.java | 12 ++++++++++++ .../room/exception/RoomErrorCode.java | 3 ++- .../codeshare/room/service/RoomService.java | 18 ++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/woori/codeshare/room/controller/RoomController.java b/src/main/java/com/woori/codeshare/room/controller/RoomController.java index 89fef7d..237233a 100644 --- a/src/main/java/com/woori/codeshare/room/controller/RoomController.java +++ b/src/main/java/com/woori/codeshare/room/controller/RoomController.java @@ -70,5 +70,17 @@ public ResponseEntity> getCurrentSession( + @PathVariable Long roomId) { + + CurrentSessionResponseDTO.CurrentSessionResponse response = roomService.getCurrentSession(roomId); + return ResponseEntity.ok(ApiResponse.of(ResponseCode.SUCCESS, response)); + } + } diff --git a/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java b/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java index 4dd5345..1f42724 100644 --- a/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java +++ b/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java @@ -12,7 +12,8 @@ public enum RoomErrorCode implements BaseErrorCode { DUPLICATE_ROOM_TITLE(HttpStatus.BAD_REQUEST, "ROOM400", "이미 동일한 이름의 방이 존재합니다."), INVALID_PASSWORD(HttpStatus.FORBIDDEN, "ROOM403", "방 비밀번호가 잘못 되었습니다."), - ROOM_NOT_FOUND(HttpStatus.NOT_FOUND, "ROOM404", "존재하지 않는 방입니다."); + ROOM_NOT_FOUND(HttpStatus.NOT_FOUND, "ROOM404", "존재하지 않는 방입니다."), + CURRENT_SESSION_NOT_FOUND(HttpStatus.NOT_FOUND, "ROOM404", "존재하지 않는 Current Session 입니다."); private final HttpStatus status; private final String code; diff --git a/src/main/java/com/woori/codeshare/room/service/RoomService.java b/src/main/java/com/woori/codeshare/room/service/RoomService.java index c4a34f2..d78981c 100644 --- a/src/main/java/com/woori/codeshare/room/service/RoomService.java +++ b/src/main/java/com/woori/codeshare/room/service/RoomService.java @@ -105,5 +105,23 @@ public CurrentSessionResponseDTO.CurrentSessionResponse saveCurrentSession(Long .build(); } + /** + * 현재 코드 세션 조회 + */ + @Transactional() + public CurrentSessionResponseDTO.CurrentSessionResponse getCurrentSession(Long roomId) { + Room room = roomRepository.findById(roomId) + .orElseThrow(() -> new RoomException(RoomErrorCode.ROOM_NOT_FOUND)); + + CurrentSession currentSession = currentSessionRepository.findByRoom_RoomId(roomId) + .orElseThrow(() -> new RoomException(RoomErrorCode.CURRENT_SESSION_NOT_FOUND)); + + return CurrentSessionResponseDTO.CurrentSessionResponse.builder() + .roomId(roomId) + .code(currentSession.getCode()) + .updatedAt(currentSession.getUpdatedAt()) + .build(); + } + } From f42b2c914ceefd636e74f1787370a7a608a8bb85 Mon Sep 17 00:00:00 2001 From: yxhwxn Date: Fri, 28 Feb 2025 20:45:51 +0900 Subject: [PATCH 3/4] =?UTF-8?q?Fix:=20=EC=97=94=ED=8B=B0=ED=8B=B0=EB=AA=85?= =?UTF-8?q?=20=EC=88=98=EC=A0=95(Current=20->=20Live)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../room/controller/RoomController.java | 14 +++---- ...estDTO.java => LiveSessionRequestDTO.java} | 4 +- ...seDTO.java => LiveSessionResponseDTO.java} | 4 +- .../{CurrentSession.java => LiveSession.java} | 4 +- .../room/exception/RoomErrorCode.java | 2 +- .../repository/CurrentSessionRepository.java | 12 ------ .../repository/LiveSessionRepository.java | 12 ++++++ .../codeshare/room/service/RoomService.java | 41 ++++++++++--------- 8 files changed, 47 insertions(+), 46 deletions(-) rename src/main/java/com/woori/codeshare/room/controller/dto/{CurrentSessionRequestDTO.java => LiveSessionRequestDTO.java} (72%) rename src/main/java/com/woori/codeshare/room/controller/dto/{CurrentSessionResponseDTO.java => LiveSessionResponseDTO.java} (80%) rename src/main/java/com/woori/codeshare/room/domain/{CurrentSession.java => LiveSession.java} (83%) delete mode 100644 src/main/java/com/woori/codeshare/room/repository/CurrentSessionRepository.java create mode 100644 src/main/java/com/woori/codeshare/room/repository/LiveSessionRepository.java diff --git a/src/main/java/com/woori/codeshare/room/controller/RoomController.java b/src/main/java/com/woori/codeshare/room/controller/RoomController.java index 237233a..1814d9d 100644 --- a/src/main/java/com/woori/codeshare/room/controller/RoomController.java +++ b/src/main/java/com/woori/codeshare/room/controller/RoomController.java @@ -2,8 +2,8 @@ import com.woori.codeshare.global.response.ApiResponse; import com.woori.codeshare.global.response.ResponseCode; -import com.woori.codeshare.room.controller.dto.CurrentSessionRequestDTO; -import com.woori.codeshare.room.controller.dto.CurrentSessionResponseDTO; +import com.woori.codeshare.room.controller.dto.LiveSessionRequestDTO; +import com.woori.codeshare.room.controller.dto.LiveSessionResponseDTO; import com.woori.codeshare.room.controller.dto.RoomRequestDTO; import com.woori.codeshare.room.controller.dto.RoomResponseDTO; import com.woori.codeshare.room.service.RoomService; @@ -62,11 +62,11 @@ public ResponseEntity> enterRoom( */ @PostMapping("/{roomId}/current-session/save") @Operation(summary = "현재 코드 세션 저장 API", description = "특정 방의 실시간 코드 내용을 저장합니다.") - public ResponseEntity> saveCurrentSession( + public ResponseEntity> saveLiveSession( @PathVariable Long roomId, - @RequestBody CurrentSessionRequestDTO.CurrentSessionRequest request) { + @RequestBody LiveSessionRequestDTO.LiveSessionRequest request) { - CurrentSessionResponseDTO.CurrentSessionResponse response = roomService.saveCurrentSession(roomId, request); + LiveSessionResponseDTO.LiveSessionResponse response = roomService.saveLiveSession(roomId, request); return ResponseEntity.ok(ApiResponse.of(ResponseCode.SUCCESS, response)); } @@ -75,10 +75,10 @@ public ResponseEntity> getCurrentSession( + public ResponseEntity> getLiveSession( @PathVariable Long roomId) { - CurrentSessionResponseDTO.CurrentSessionResponse response = roomService.getCurrentSession(roomId); + LiveSessionResponseDTO.LiveSessionResponse response = roomService.getLiveSession(roomId); return ResponseEntity.ok(ApiResponse.of(ResponseCode.SUCCESS, response)); } diff --git a/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionRequestDTO.java b/src/main/java/com/woori/codeshare/room/controller/dto/LiveSessionRequestDTO.java similarity index 72% rename from src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionRequestDTO.java rename to src/main/java/com/woori/codeshare/room/controller/dto/LiveSessionRequestDTO.java index 83cd310..f85e30d 100644 --- a/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionRequestDTO.java +++ b/src/main/java/com/woori/codeshare/room/controller/dto/LiveSessionRequestDTO.java @@ -4,12 +4,12 @@ import lombok.Getter; import lombok.NoArgsConstructor; -public class CurrentSessionRequestDTO { +public class LiveSessionRequestDTO { @Getter @NoArgsConstructor @AllArgsConstructor - public static class CurrentSessionRequest { + public static class LiveSessionRequest { private String code; } } diff --git a/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionResponseDTO.java b/src/main/java/com/woori/codeshare/room/controller/dto/LiveSessionResponseDTO.java similarity index 80% rename from src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionResponseDTO.java rename to src/main/java/com/woori/codeshare/room/controller/dto/LiveSessionResponseDTO.java index c658d18..07f3e84 100644 --- a/src/main/java/com/woori/codeshare/room/controller/dto/CurrentSessionResponseDTO.java +++ b/src/main/java/com/woori/codeshare/room/controller/dto/LiveSessionResponseDTO.java @@ -7,13 +7,13 @@ import java.time.LocalDateTime; -public class CurrentSessionResponseDTO { +public class LiveSessionResponseDTO { @Getter @Builder @NoArgsConstructor @AllArgsConstructor - public static class CurrentSessionResponse { + public static class LiveSessionResponse { private Long roomId; private String code; private LocalDateTime updatedAt; diff --git a/src/main/java/com/woori/codeshare/room/domain/CurrentSession.java b/src/main/java/com/woori/codeshare/room/domain/LiveSession.java similarity index 83% rename from src/main/java/com/woori/codeshare/room/domain/CurrentSession.java rename to src/main/java/com/woori/codeshare/room/domain/LiveSession.java index e1d18c2..2260554 100644 --- a/src/main/java/com/woori/codeshare/room/domain/CurrentSession.java +++ b/src/main/java/com/woori/codeshare/room/domain/LiveSession.java @@ -8,7 +8,7 @@ @Entity @Data @NoArgsConstructor -public class CurrentSession extends BaseDateTimeEntity { +public class LiveSession extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -21,7 +21,7 @@ public class CurrentSession extends BaseDateTimeEntity { @Lob private String code; - public CurrentSession(Room room) { + public LiveSession(Room room) { this.room = room; this.code = ""; } diff --git a/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java b/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java index 1f42724..5dbb802 100644 --- a/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java +++ b/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java @@ -13,7 +13,7 @@ public enum RoomErrorCode implements BaseErrorCode { DUPLICATE_ROOM_TITLE(HttpStatus.BAD_REQUEST, "ROOM400", "이미 동일한 이름의 방이 존재합니다."), INVALID_PASSWORD(HttpStatus.FORBIDDEN, "ROOM403", "방 비밀번호가 잘못 되었습니다."), ROOM_NOT_FOUND(HttpStatus.NOT_FOUND, "ROOM404", "존재하지 않는 방입니다."), - CURRENT_SESSION_NOT_FOUND(HttpStatus.NOT_FOUND, "ROOM404", "존재하지 않는 Current Session 입니다."); + LIVE_SESSION_NOT_FOUND(HttpStatus.NOT_FOUND, "ROOM404", "존재하지 않는 Live Session id 값입니다."); private final HttpStatus status; private final String code; diff --git a/src/main/java/com/woori/codeshare/room/repository/CurrentSessionRepository.java b/src/main/java/com/woori/codeshare/room/repository/CurrentSessionRepository.java deleted file mode 100644 index c7d249a..0000000 --- a/src/main/java/com/woori/codeshare/room/repository/CurrentSessionRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.woori.codeshare.room.repository; - -import com.woori.codeshare.room.domain.CurrentSession; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -@Repository -public interface CurrentSessionRepository extends JpaRepository { - Optional findByRoom_RoomId(Long roomId); -} diff --git a/src/main/java/com/woori/codeshare/room/repository/LiveSessionRepository.java b/src/main/java/com/woori/codeshare/room/repository/LiveSessionRepository.java new file mode 100644 index 0000000..f9c0927 --- /dev/null +++ b/src/main/java/com/woori/codeshare/room/repository/LiveSessionRepository.java @@ -0,0 +1,12 @@ +package com.woori.codeshare.room.repository; + +import com.woori.codeshare.room.domain.LiveSession; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface LiveSessionRepository extends JpaRepository { + Optional findByRoom_RoomId(Long roomId); +} diff --git a/src/main/java/com/woori/codeshare/room/service/RoomService.java b/src/main/java/com/woori/codeshare/room/service/RoomService.java index d78981c..b7f2433 100644 --- a/src/main/java/com/woori/codeshare/room/service/RoomService.java +++ b/src/main/java/com/woori/codeshare/room/service/RoomService.java @@ -1,15 +1,15 @@ package com.woori.codeshare.room.service; -import com.woori.codeshare.room.controller.dto.CurrentSessionRequestDTO; -import com.woori.codeshare.room.controller.dto.CurrentSessionResponseDTO; +import com.woori.codeshare.room.controller.dto.LiveSessionRequestDTO; +import com.woori.codeshare.room.controller.dto.LiveSessionResponseDTO; import com.woori.codeshare.room.controller.dto.RoomRequestDTO; import com.woori.codeshare.room.controller.dto.RoomResponseDTO; -import com.woori.codeshare.room.domain.CurrentSession; +import com.woori.codeshare.room.domain.LiveSession; import com.woori.codeshare.room.domain.Room; import com.woori.codeshare.room.exception.RoomErrorCode; import com.woori.codeshare.room.exception.RoomException; -import com.woori.codeshare.room.repository.CurrentSessionRepository; +import com.woori.codeshare.room.repository.LiveSessionRepository; import com.woori.codeshare.room.repository.RoomRepository; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; @@ -23,7 +23,7 @@ public class RoomService { private final RoomRepository roomRepository; - private final CurrentSessionRepository currentSessionRepository; + private final LiveSessionRepository liveSessionRepository; private final BCryptPasswordEncoder passwordEncoder; /** @@ -87,21 +87,22 @@ public RoomResponseDTO.RoomEnterResponse enterRoomByUuid(String uuid, String raw * 현재 코드 세션 저장 */ @Transactional - public CurrentSessionResponseDTO.CurrentSessionResponse saveCurrentSession(Long roomId, CurrentSessionRequestDTO.CurrentSessionRequest request) { + public LiveSessionResponseDTO.LiveSessionResponse saveLiveSession(Long roomId, LiveSessionRequestDTO.LiveSessionRequest request) { Room room = roomRepository.findById(roomId) .orElseThrow(() -> new RoomException(RoomErrorCode.ROOM_NOT_FOUND)); - // 기존 CurrentSession이 존재하면 업데이트, 없으면 새로 생성 - CurrentSession currentSession = currentSessionRepository.findByRoom_RoomId(roomId) - .orElse(new CurrentSession(room)); + // 기존 Live Session이 존재하면 업데이트, 없으면 새로 생성 + LiveSession liveSession = liveSessionRepository.findByRoom_RoomId(roomId) + .orElse(new LiveSession(room)); - currentSession.setCode(request.getCode()); - currentSessionRepository.save(currentSession); + liveSession.setCode(request.getCode()); + liveSessionRepository.save(liveSession); - return CurrentSessionResponseDTO.CurrentSessionResponse.builder() + + return LiveSessionResponseDTO.LiveSessionResponse.builder() .roomId(roomId) - .code(currentSession.getCode()) - .updatedAt(currentSession.getUpdatedAt()) + .code(liveSession.getCode()) + .updatedAt(liveSession.getUpdatedAt()) .build(); } @@ -109,17 +110,17 @@ public CurrentSessionResponseDTO.CurrentSessionResponse saveCurrentSession(Long * 현재 코드 세션 조회 */ @Transactional() - public CurrentSessionResponseDTO.CurrentSessionResponse getCurrentSession(Long roomId) { + public LiveSessionResponseDTO.LiveSessionResponse getLiveSession(Long roomId) { Room room = roomRepository.findById(roomId) .orElseThrow(() -> new RoomException(RoomErrorCode.ROOM_NOT_FOUND)); - CurrentSession currentSession = currentSessionRepository.findByRoom_RoomId(roomId) - .orElseThrow(() -> new RoomException(RoomErrorCode.CURRENT_SESSION_NOT_FOUND)); + LiveSession liveSession = liveSessionRepository.findByRoom_RoomId(roomId) + .orElseThrow(() -> new RoomException(RoomErrorCode.LIVE_SESSION_NOT_FOUND)); - return CurrentSessionResponseDTO.CurrentSessionResponse.builder() + return LiveSessionResponseDTO.LiveSessionResponse.builder() .roomId(roomId) - .code(currentSession.getCode()) - .updatedAt(currentSession.getUpdatedAt()) + .code(liveSession.getCode()) + .updatedAt(liveSession.getUpdatedAt()) .build(); } From 8414fb458da9e1b3b690d4a2c190734c522b0a52 Mon Sep 17 00:00:00 2001 From: yxhwxn Date: Fri, 28 Feb 2025 20:48:10 +0900 Subject: [PATCH 4/4] =?UTF-8?q?Docs:=20API=20=EB=AA=85=EC=84=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/error_code.md | 4 ++++ .../com/woori/codeshare/room/controller/RoomController.java | 4 ++-- .../com/woori/codeshare/room/exception/RoomErrorCode.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/error_code.md b/docs/error_code.md index 89e691d..d479ceb 100644 --- a/docs/error_code.md +++ b/docs/error_code.md @@ -58,6 +58,10 @@ - **COMMENT404: 존재하지 않는 댓글입니다.** +## ✅ **Live Session 오류** + +- **LIVE_SESSION404: 존재하지 않는 Live Session id 값입니다.** + --- ## ✅ **페이징 오류** diff --git a/src/main/java/com/woori/codeshare/room/controller/RoomController.java b/src/main/java/com/woori/codeshare/room/controller/RoomController.java index 1814d9d..1668ee1 100644 --- a/src/main/java/com/woori/codeshare/room/controller/RoomController.java +++ b/src/main/java/com/woori/codeshare/room/controller/RoomController.java @@ -60,7 +60,7 @@ public ResponseEntity> enterRoom( /** * 현재 코드 세션 저장 API */ - @PostMapping("/{roomId}/current-session/save") + @PostMapping("/{roomId}/live-session/save") @Operation(summary = "현재 코드 세션 저장 API", description = "특정 방의 실시간 코드 내용을 저장합니다.") public ResponseEntity> saveLiveSession( @PathVariable Long roomId, @@ -73,7 +73,7 @@ public ResponseEntity> s /** * 현재 코드 세션 조회 API */ - @GetMapping("/{roomId}/current-session") + @GetMapping("/{roomId}/live-session") @Operation(summary = "현재 코드 세션 조회 API", description = "특정 방의 실시간 코드 내용을 조회합니다.") public ResponseEntity> getLiveSession( @PathVariable Long roomId) { diff --git a/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java b/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java index 5dbb802..09ce871 100644 --- a/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java +++ b/src/main/java/com/woori/codeshare/room/exception/RoomErrorCode.java @@ -13,7 +13,7 @@ public enum RoomErrorCode implements BaseErrorCode { DUPLICATE_ROOM_TITLE(HttpStatus.BAD_REQUEST, "ROOM400", "이미 동일한 이름의 방이 존재합니다."), INVALID_PASSWORD(HttpStatus.FORBIDDEN, "ROOM403", "방 비밀번호가 잘못 되었습니다."), ROOM_NOT_FOUND(HttpStatus.NOT_FOUND, "ROOM404", "존재하지 않는 방입니다."), - LIVE_SESSION_NOT_FOUND(HttpStatus.NOT_FOUND, "ROOM404", "존재하지 않는 Live Session id 값입니다."); + LIVE_SESSION_NOT_FOUND(HttpStatus.NOT_FOUND, "LIVE_SESSION404", "존재하지 않는 Live Session id 값입니다."); private final HttpStatus status; private final String code;