diff --git a/chat-service/src/main/java/com/relay/chatservice/chat/ChatController.java b/chat-service/src/main/java/com/relay/chatservice/chat/ChatController.java new file mode 100644 index 00000000..9d47d0d9 --- /dev/null +++ b/chat-service/src/main/java/com/relay/chatservice/chat/ChatController.java @@ -0,0 +1,47 @@ +package com.relay.chatservice.chat; + +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.messaging.handler.annotation.MessageMapping; +import org.springframework.messaging.handler.annotation.Payload; +import org.springframework.messaging.simp.SimpMessagingTemplate; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +import java.util.List; + +@Controller +@RequiredArgsConstructor +public class ChatController { + private final ChatMessageService chatMessageService; + private final SimpMessagingTemplate messagingTemplate; + + @MessageMapping("/chat") + public void processMessage( + @Payload ChatMessage chatMessage + ) { + ChatMessage savedMsg = chatMessageService.save(chatMessage); + // john/queue/message + + messagingTemplate.convertAndSendToUser( + chatMessage.getRecipientId(), + "/queue/messages", + ChatNotification.builder() + .id(savedMsg.getId()) + .senderId(savedMsg.getSenderId()) + .recipientId(savedMsg.getRecipientId()) + .content(savedMsg.getContent()) + .build() + + ); + } + + @GetMapping("/messages/{senderId}/{recipientId}") + public ResponseEntity> findChatMessages( + @PathVariable("senderId") String senderId, + @PathVariable("recipientId") String recipientId + ) { + return ResponseEntity.ok(chatMessageService.findChatMessages(senderId, recipientId)); + } +} diff --git a/chat-service/src/main/java/com/relay/chatservice/chat/ChatNotification.java b/chat-service/src/main/java/com/relay/chatservice/chat/ChatNotification.java new file mode 100644 index 00000000..e5668720 --- /dev/null +++ b/chat-service/src/main/java/com/relay/chatservice/chat/ChatNotification.java @@ -0,0 +1,17 @@ +package com.relay.chatservice.chat; + +import lombok.*; +import org.springframework.data.mongodb.core.mapping.Document; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Document +public class ChatNotification { + private String id; + private String senderId; + private String recipientId; + private String content; +}