diff --git a/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatmessage/controller/ChatMessageController.kt b/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatmessage/controller/ChatMessageController.kt index 37fad20..53aa0fe 100644 --- a/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatmessage/controller/ChatMessageController.kt +++ b/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatmessage/controller/ChatMessageController.kt @@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/api/userchat/rooms") class ChatMessageController( - private val msgSvc: ChatMessageService, + private val messageService: ChatMessageService, private val messagingTemplate: SimpMessagingTemplate, ) { @GetMapping("/{roomId}/messages") @@ -26,9 +26,9 @@ class ChatMessageController( ): ResponseEntity> { val messages = if (after == null) { - msgSvc.getlistbefore(roomId, limit) + messageService.getlistbefore(roomId, limit) } else { - msgSvc.getlistafter(roomId, after) + messageService.getlistafter(roomId, after) } return ResponseEntity.ok(ApiResponse(msg = "메시지 조회", data = messages)) } @@ -38,7 +38,7 @@ class ChatMessageController( @PathVariable roomId: Long, @RequestBody req: ChatMessageService.SendMessageReq, ): ResponseEntity> { - val saved = msgSvc.send(roomId, req) + val saved = messageService.send(roomId, req) messagingTemplate.convertAndSend( "/topic/userchat/$roomId", ApiResponse(msg = "메시지 전송", data = saved), diff --git a/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatmessage/service/ChatMessageService.kt b/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatmessage/service/ChatMessageService.kt index 26f73a0..51574b8 100644 --- a/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatmessage/service/ChatMessageService.kt +++ b/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatmessage/service/ChatMessageService.kt @@ -8,32 +8,29 @@ import org.springframework.transaction.annotation.Transactional @Service class ChatMessageService( - private val msgRepository: ChatMessageRepository, + private val messageRepository: ChatMessageRepository, private val roomRepository: ChatRoomRepository, ) { data class SendMessageReq(val senderId: Long, val content: String) + @Transactional(readOnly = true) fun getlistbefore( roomId: Long, limit: Int, - ): List = msgRepository.findTop50ByRoomIdOrderByIdDesc(roomId).asReversed() + ): List = messageRepository.findTop50ByRoomIdOrderByIdDesc(roomId).asReversed() + @Transactional(readOnly = true) fun getlistafter( roomId: Long, afterId: Long, - ): List = msgRepository.findByRoomIdAndIdGreaterThanOrderByIdAsc(roomId, afterId) - - @Transactional - fun deleteByRoom(roomId: Long) { - msgRepository.deleteByRoomId(roomId) - } + ): List = messageRepository.findByRoomIdAndIdGreaterThanOrderByIdAsc(roomId, afterId) @Transactional fun send( roomId: Long, req: SendMessageReq, ): ChatMessage { - val saved = msgRepository.save(ChatMessage(roomId = roomId, senderId = req.senderId, content = req.content)) + val saved = messageRepository.save(ChatMessage(roomId = roomId, senderId = req.senderId, content = req.content)) roomRepository.findById(roomId).ifPresent { roomRepository.save(it.copy(updatedAt = saved.createdAt, lastMessageId = saved.id)) } diff --git a/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatroom/controller/ChatRoomController.kt b/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatroom/controller/ChatRoomController.kt index 536a68b..5dda47b 100644 --- a/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatroom/controller/ChatRoomController.kt +++ b/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatroom/controller/ChatRoomController.kt @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/api/userchat/rooms") class ChatRoomController( - private val roomSvc: ChatRoomService, + private val roomService: ChatRoomService, ) { data class StartChatReq(val guideId: Long, val userId: Long) @@ -25,7 +25,7 @@ class ChatRoomController( fun startChat( @RequestBody req: StartChatReq, ): ResponseEntity>> { - val roomId = roomSvc.exceptOneToOneRoom(req.guideId, req.userId).id!! + val roomId = roomService.exceptOneToOneRoom(req.guideId, req.userId).id!! return ResponseEntity.ok(ApiResponse(msg = "채팅방 시작", data = mapOf("roomId" to roomId))) } @@ -34,12 +34,12 @@ class ChatRoomController( @PathVariable roomId: Long, @RequestBody req: DeleteChatReq, ): ResponseEntity> { - roomSvc.deleteByOwner(roomId, req.userId) + roomService.deleteByOwner(roomId, req.userId) return ResponseEntity.ok(ApiResponse("채팅방 삭제 완료")) } @GetMapping("/{roomId}") fun get( @PathVariable roomId: Long, - ) = ResponseEntity.ok(ApiResponse(msg = "채팅방 조회", data = roomSvc.get(roomId))) + ) = ResponseEntity.ok(ApiResponse(msg = "채팅방 조회", data = roomService.get(roomId))) } diff --git a/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatroom/service/ChatRoomService.kt b/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatroom/service/ChatRoomService.kt index 35e446d..553e927 100644 --- a/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatroom/service/ChatRoomService.kt +++ b/src/main/kotlin/com/back/koreaTravelGuide/domain/userChat/chatroom/service/ChatRoomService.kt @@ -27,6 +27,7 @@ class ChatRoomService( ) } + @Transactional(readOnly = true) fun get(roomId: Long): ChatRoom = roomRepository.findById(roomId) .orElseThrow { NoSuchElementException("room not found: $roomId") }