diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fdc1be2..094aa45 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,6 +4,9 @@ on: push: branches: - v3 + pull_request: + branches: + - v3 permissions: contents: read diff --git a/src/main/java/com/chat/yourway/controller/websocket/ChatController.java b/src/main/java/com/chat/yourway/controller/websocket/ChatController.java new file mode 100644 index 0000000..d62d733 --- /dev/null +++ b/src/main/java/com/chat/yourway/controller/websocket/ChatController.java @@ -0,0 +1,37 @@ +package com.chat.yourway.controller.websocket; + + +import com.chat.yourway.dto.request.MessageRequestDto; +import com.chat.yourway.dto.response.MessageResponseDto; +import com.chat.yourway.service.MessageService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.messaging.handler.annotation.DestinationVariable; +import org.springframework.messaging.handler.annotation.MessageMapping; +import org.springframework.messaging.simp.SimpMessagingTemplate; +import org.springframework.stereotype.Controller; + +import java.util.UUID; + +@Controller +@Slf4j +@RequiredArgsConstructor +public class ChatController { + + private final SimpMessagingTemplate messagingTemplate; + private final MessageService messageService; + + @MessageMapping("/app/topic/public/{topicId}") + public MessageResponseDto sendMessage(@DestinationVariable UUID topicId, MessageRequestDto message) { + + log.info("Received message for topic ID: {}", topicId); + + MessageResponseDto sendMessage = messageService.sendToTopic(topicId, message); + log.info("Message was saved in DB"); + + messagingTemplate.convertAndSend("/topic/public/" + topicId, message); + log.info("Message sent to topic ID: {}", topicId) ; + + return sendMessage; + } +}