Skip to content

Commit 778980f

Browse files
authored
Merge pull request #83 from kjiyun/chat
#82 Feat: 채팅 페이지네이션 기능 추가
2 parents bae3901 + c02899c commit 778980f

File tree

7 files changed

+16
-56
lines changed

7 files changed

+16
-56
lines changed

src/main/java/com/memesphere/domain/chat/controller/ChatController.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package com.memesphere.domain.chat.controller;
22

33
import com.memesphere.domain.chat.dto.request.ChatRequest;
4-
import com.memesphere.domain.chat.dto.response.ChatListResponse;
54
import com.memesphere.domain.chat.dto.response.ChatResponse;
65
import com.memesphere.domain.chat.service.ChatService;
76
import com.memesphere.global.apipayload.ApiResponse;
87
import com.memesphere.global.jwt.CustomUserDetails;
98
import io.swagger.v3.oas.annotations.Operation;
109
import io.swagger.v3.oas.annotations.tags.Tag;
1110
import lombok.RequiredArgsConstructor;
12-
import lombok.extern.log4j.Log4j2;
11+
import org.springframework.data.domain.Page;
12+
import org.springframework.data.domain.Pageable;
1313
import org.springframework.messaging.handler.annotation.DestinationVariable;
1414
import org.springframework.messaging.handler.annotation.MessageMapping;
1515
import org.springframework.messaging.handler.annotation.Payload;
@@ -32,17 +32,17 @@ public ChatResponse chat(@DestinationVariable("coin_id") Long coin_id,
3232
return chatService.saveMessage(coin_id, chatRequest);
3333
}
3434

35-
@GetMapping("/chat/{coin_id}/list/")
35+
@GetMapping("/chat/{coin_id}/list")
3636
@Operation(summary = "코인별 채팅 전체 메시지 조회 API",
3737
description = "특정 코인의 채팅방의 전체 메시지를 보여줍니다.")
38-
public ApiResponse<ChatListResponse> getChatList(@PathVariable("coin_id") Long coin_id) {
39-
ChatListResponse chatListResponse = chatService.getChatList(coin_id);
38+
public ApiResponse<Page<ChatResponse>> getChatList(@PathVariable("coin_id") Long coin_id,
39+
Pageable pageable) {
4040

41-
return ApiResponse.onSuccess(chatListResponse);
41+
return ApiResponse.onSuccess(chatService.getChatList(coin_id, pageable));
4242
}
4343

4444
//최신 댓글 조회 Api
45-
@GetMapping("/chat/{coin_id}/latest/")
45+
@GetMapping("/chat/{coin_id}/latest")
4646
@Operation(summary = "코인별 최신 댓글 조회 API",
4747
description = "특정 코인에 대한 최신 댓글을 반환합니다. 요청 시 최신 댓글 하나만 가져옵니다.")
4848
public ApiResponse<ChatResponse> getLatestMessages(

src/main/java/com/memesphere/domain/chat/converter/ChatConverter.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package com.memesphere.domain.chat.converter;
22

3-
import com.memesphere.domain.chat.dto.response.ChatListResponse;
43
import com.memesphere.domain.chat.entity.Chat;
54
import com.memesphere.domain.chat.entity.ChatLike;
65
import com.memesphere.domain.memecoin.entity.MemeCoin;
76
import com.memesphere.domain.chat.dto.request.ChatRequest;
87
import com.memesphere.domain.chat.dto.response.ChatResponse;
98
import com.memesphere.domain.user.entity.User;
109

11-
import java.util.List;
12-
1310
public class ChatConverter {
1411

1512
public static Chat toChat(MemeCoin memeCoin, ChatRequest chatRequest, User user) {
@@ -33,12 +30,6 @@ public static ChatResponse toChatResponse(Chat chat) {
3330
.build();
3431
}
3532

36-
public static ChatListResponse toChatListResponse(List<ChatResponse> chatResponses) {
37-
return ChatListResponse.builder()
38-
.chats(chatResponses)
39-
.build();
40-
}
41-
4233
public static ChatLike toChatLike(Chat chat, User user) {
4334
return ChatLike.builder()
4435
.user(user)

src/main/java/com/memesphere/domain/chat/dto/response/ChatListResponse.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/main/java/com/memesphere/domain/chat/repository/ChatCustomRepository.java

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/main/java/com/memesphere/domain/chat/repository/ChatCustomRepositoryImpl.java

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.memesphere.domain.chat.repository;
22

33
import com.memesphere.domain.chat.entity.Chat;
4+
import org.springframework.data.domain.Page;
5+
import org.springframework.data.domain.Pageable;
46
import org.springframework.data.jpa.repository.JpaRepository;
57

68
import java.util.List;
79

8-
public interface ChatRepository extends JpaRepository<Chat, Long>, ChatCustomRepository {
10+
public interface ChatRepository extends JpaRepository<Chat, Long> {
911

1012
Chat findFirstByMemeCoin_IdOrderByCreatedAtDesc(Long coin_id);
11-
List<Chat> findAllByMemeCoin_Id(Long coin_id);
13+
Page<Chat> findAllByMemeCoin_Id(Long coin_id, Pageable pageable);
1214
}

src/main/java/com/memesphere/domain/chat/service/ChatService.java

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.memesphere.domain.chat.service;
22

33
import com.memesphere.domain.chat.converter.ChatConverter;
4-
import com.memesphere.domain.chat.dto.response.ChatListResponse;
54
import com.memesphere.domain.chat.entity.Chat;
65
import com.memesphere.domain.chat.entity.ChatLike;
76
import com.memesphere.domain.chat.repository.ChatLikeRepository;
@@ -15,11 +14,11 @@
1514
import com.memesphere.domain.memecoin.repository.MemeCoinRepository;
1615
import com.memesphere.domain.chat.repository.ChatRepository;
1716
import lombok.RequiredArgsConstructor;
17+
import org.springframework.data.domain.Page;
18+
import org.springframework.data.domain.Pageable;
1819
import org.springframework.stereotype.Service;
1920
import org.springframework.transaction.annotation.Transactional;
2021

21-
import java.util.ArrayList;
22-
import java.util.List;
2322
import java.util.Optional;
2423

2524
@Service
@@ -46,18 +45,10 @@ public ChatResponse saveMessage(Long coin_id, ChatRequest chatRequest) {
4645
}
4746

4847
@Transactional
49-
public ChatListResponse getChatList(Long coin_id) {
48+
public Page<ChatResponse> getChatList(Long coin_id, Pageable pageable) {
5049

51-
List<Chat> chatList = chatRepository.findAllByMemeCoin_Id(coin_id);
52-
List<ChatResponse> chatResponses = new ArrayList<>();
53-
54-
for (Chat chat : chatList) {
55-
ChatResponse chatResponse = ChatConverter.toChatResponse(chat);
56-
chatResponses.add(chatResponse);
57-
}
58-
59-
ChatListResponse chatListResponse = ChatConverter.toChatListResponse(chatResponses);
60-
return chatListResponse;
50+
Page<Chat> chatPage = chatRepository.findAllByMemeCoin_Id(coin_id, pageable);
51+
return chatPage.map(ChatConverter::toChatResponse);
6152
}
6253

6354
// 최신 댓글을 가져오는 메서드

0 commit comments

Comments
 (0)