From 1cfa7c40b9339c7127690af2507b87f1e92d0893 Mon Sep 17 00:00:00 2001 From: gwon11225 Date: Thu, 27 Jun 2024 20:26:19 +0900 Subject: [PATCH] =?UTF-8?q?Feat=20::=20=EB=A3=B8=20=EC=A0=9C=EB=AA=A9=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EA=B8=B0=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../palette/controller/RoomController.kt | 8 +++++++ .../dto/room/UpdateRoomTitleRequest.kt | 6 +++++ .../kotlin/com/teamapi/palette/entity/Room.kt | 2 +- .../teamapi/palette/service/RoomService.kt | 23 ++++++++++++++++++- 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/com/teamapi/palette/dto/room/UpdateRoomTitleRequest.kt diff --git a/src/main/kotlin/com/teamapi/palette/controller/RoomController.kt b/src/main/kotlin/com/teamapi/palette/controller/RoomController.kt index d4b5520..a53ada5 100644 --- a/src/main/kotlin/com/teamapi/palette/controller/RoomController.kt +++ b/src/main/kotlin/com/teamapi/palette/controller/RoomController.kt @@ -1,6 +1,7 @@ package com.teamapi.palette.controller import com.teamapi.palette.dto.room.CreateRoomRequest +import com.teamapi.palette.dto.room.UpdateRoomTitleRequest import com.teamapi.palette.response.Response import com.teamapi.palette.response.ResponseBody import com.teamapi.palette.service.RoomService @@ -19,6 +20,13 @@ class RoomController ( fun getRoomList() = roomService.getRoomList() .map { ResponseBody.ok("룸 조회 성공", it) } + @PatchMapping("/title") + fun updateRoomTitle( + @RequestBody updateRoomTitleRequest: UpdateRoomTitleRequest + ) = roomService + .updateRoomTitle(updateRoomTitleRequest) + .thenReturn(Response.ok("룸 업데이트 완료")) + @DeleteMapping("/{roomId}") fun deleteRoom(@PathVariable roomId: Long) = roomService.deleteRoom(roomId) .thenReturn(Response.ok("룸 삭제 완료")) diff --git a/src/main/kotlin/com/teamapi/palette/dto/room/UpdateRoomTitleRequest.kt b/src/main/kotlin/com/teamapi/palette/dto/room/UpdateRoomTitleRequest.kt new file mode 100644 index 0000000..77a5d1d --- /dev/null +++ b/src/main/kotlin/com/teamapi/palette/dto/room/UpdateRoomTitleRequest.kt @@ -0,0 +1,6 @@ +package com.teamapi.palette.dto.room + +data class UpdateRoomTitleRequest ( + val id: Long, + val title: String +) \ No newline at end of file diff --git a/src/main/kotlin/com/teamapi/palette/entity/Room.kt b/src/main/kotlin/com/teamapi/palette/entity/Room.kt index ea14f53..03bf193 100644 --- a/src/main/kotlin/com/teamapi/palette/entity/Room.kt +++ b/src/main/kotlin/com/teamapi/palette/entity/Room.kt @@ -6,7 +6,7 @@ import org.springframework.data.relational.core.mapping.Column data class Room( @Id val id: Long? = null, - val title: String? = null, + val title: String? = "New Chat", @Column("user_id") val userId: Long ) diff --git a/src/main/kotlin/com/teamapi/palette/service/RoomService.kt b/src/main/kotlin/com/teamapi/palette/service/RoomService.kt index cde4d3d..49241bd 100644 --- a/src/main/kotlin/com/teamapi/palette/service/RoomService.kt +++ b/src/main/kotlin/com/teamapi/palette/service/RoomService.kt @@ -2,6 +2,7 @@ package com.teamapi.palette.service import com.teamapi.palette.dto.room.CreateRoomRequest import com.teamapi.palette.dto.room.RoomResponse +import com.teamapi.palette.dto.room.UpdateRoomTitleRequest import com.teamapi.palette.entity.Room import com.teamapi.palette.repository.RoomRepository import com.teamapi.palette.repository.UserRepository @@ -23,7 +24,7 @@ class RoomService ( .me() .findUser(userRepository) .flatMap { - roomRepository.save(Room(userId = it.id!!, title = request.title)).then() + roomRepository.save(Room(userId = it.id!!)).then() } } @@ -40,6 +41,26 @@ class RoomService ( .collectList() } + fun updateRoomTitle(updateRoomTitleRequest: UpdateRoomTitleRequest): Mono { + return sessionHolder + .me() + .findUser(userRepository) + .flatMap { user -> + roomRepository + .findById(updateRoomTitleRequest.id) + .switchIfEmpty { Mono.error(CustomException(ErrorCode.ROOM_NOT_FOUND)) } + .flatMap { room -> + if (user.id == room.userId) { + roomRepository + .save(room.copy(title = updateRoomTitleRequest.title)) + } else { + Mono.error(CustomException(ErrorCode.FORBIDDEN)) + } + } + } + .then() + } + fun deleteRoom(roomId: Long): Mono { return sessionHolder .me()