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()