From fa5791a9ee193bff57bc49ba296bfe1658c896bc Mon Sep 17 00:00:00 2001 From: Alexandr Juncevich Date: Tue, 19 Dec 2023 23:52:08 +0300 Subject: [PATCH] Add ChatMessage service --- .../relay/chatservice/chat/ChatMessage.java | 24 +++++++++++ .../chat/ChatMessageRepository.java | 9 +++++ .../chatservice/chat/ChatMessageService.java | 40 +++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 chat-service/src/main/java/com/relay/chatservice/chat/ChatMessage.java create mode 100644 chat-service/src/main/java/com/relay/chatservice/chat/ChatMessageRepository.java create mode 100644 chat-service/src/main/java/com/relay/chatservice/chat/ChatMessageService.java diff --git a/chat-service/src/main/java/com/relay/chatservice/chat/ChatMessage.java b/chat-service/src/main/java/com/relay/chatservice/chat/ChatMessage.java new file mode 100644 index 00000000..a109cae3 --- /dev/null +++ b/chat-service/src/main/java/com/relay/chatservice/chat/ChatMessage.java @@ -0,0 +1,24 @@ +package com.relay.chatservice.chat; + + +import lombok.*; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Document +public class ChatMessage { + @Id + private String id; + private String chatId; + private String senderId; + private String recipientId; + private String content; + private Date timestamp; +} diff --git a/chat-service/src/main/java/com/relay/chatservice/chat/ChatMessageRepository.java b/chat-service/src/main/java/com/relay/chatservice/chat/ChatMessageRepository.java new file mode 100644 index 00000000..7cfbe37e --- /dev/null +++ b/chat-service/src/main/java/com/relay/chatservice/chat/ChatMessageRepository.java @@ -0,0 +1,9 @@ +package com.relay.chatservice.chat; + +import org.springframework.data.mongodb.repository.MongoRepository; + +import java.util.List; + +public interface ChatMessageRepository extends MongoRepository { + List findByChatId(String chatId); +} diff --git a/chat-service/src/main/java/com/relay/chatservice/chat/ChatMessageService.java b/chat-service/src/main/java/com/relay/chatservice/chat/ChatMessageService.java new file mode 100644 index 00000000..92b85e13 --- /dev/null +++ b/chat-service/src/main/java/com/relay/chatservice/chat/ChatMessageService.java @@ -0,0 +1,40 @@ +package com.relay.chatservice.chat; + +import com.relay.chatservice.chatroom.ChatRoomService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class ChatMessageService { + private final ChatMessageRepository chatMessageRepository; + private final ChatRoomService chatRoomService; + + public ChatMessage save(ChatMessage chatMessage) { + + var chatId = chatRoomService.getChatRoomId( + chatMessage.getSenderId(), + chatMessage.getRecipientId(), + true + ).orElseThrow(); + chatMessage.setChatId(chatId); + chatMessageRepository.save(chatMessage); + return chatMessage; + } + + public List findChatMessages( + String senderId, + String recipientId + ) { + var chatId = chatRoomService.getChatRoomId( + senderId, + recipientId, + false + ); + + return chatId.map(chatMessageRepository::findByChatId).orElse(new ArrayList<>()); + } +}