diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/controller/ChatRoomController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/controller/ChatRoomController.kt index 9623f3f..1fbde14 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/controller/ChatRoomController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/controller/ChatRoomController.kt @@ -54,12 +54,13 @@ class ChatRoomController( */ @GetMapping("/list") fun listMyChatRooms( - @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, + @RequestParam(defaultValue = "0") page: Int ) = run { if (member == null || member.auth == null) { ApiResponse.ok(emptyList()) } else { - val response = chatRoomService.listMyChatRooms(member) + val response = chatRoomService.listMyChatRooms(member, page) ApiResponse.ok(response) } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/repository/ChatRoomRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/repository/ChatRoomRepository.kt index c840948..0b719a0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/repository/ChatRoomRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/repository/ChatRoomRepository.kt @@ -4,6 +4,7 @@ import kr.co.vividnext.sodalive.chat.character.ChatCharacter import kr.co.vividnext.sodalive.chat.room.ChatRoom import kr.co.vividnext.sodalive.chat.room.dto.ChatRoomListQueryDto import kr.co.vividnext.sodalive.member.Member +import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query import org.springframework.data.repository.query.Param @@ -55,6 +56,7 @@ interface ChatRoomRepository : JpaRepository { """ ) fun findMemberRoomsOrderByLastMessageDesc( - @Param("member") member: Member + @Param("member") member: Member, + pageable: Pageable ): List } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/service/ChatRoomService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/service/ChatRoomService.kt index 661f73a..42d24e0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/service/ChatRoomService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/service/ChatRoomService.kt @@ -21,6 +21,7 @@ import kr.co.vividnext.sodalive.common.SodaException import kr.co.vividnext.sodalive.member.Member import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Value +import org.springframework.data.domain.PageRequest import org.springframework.http.HttpEntity import org.springframework.http.HttpHeaders import org.springframework.http.HttpMethod @@ -183,8 +184,13 @@ class ChatRoomService( } @Transactional(readOnly = true) - fun listMyChatRooms(member: Member): List { - val rooms: List = chatRoomRepository.findMemberRoomsOrderByLastMessageDesc(member) + fun listMyChatRooms(member: Member, page: Int): List { + // 기본 페이지당 20개 고정 + val pageable = PageRequest.of(if (page < 0) 0 else page, 20) + val rooms: List = chatRoomRepository.findMemberRoomsOrderByLastMessageDesc( + member, + pageable + ) return rooms.map { q -> val room = ChatRoom( sessionId = "",