Skip to content

Commit

Permalink
Merge pull request #103 from Hanaemong/hyeonu
Browse files Browse the repository at this point in the history
Hyeonu
  • Loading branch information
khw18 authored Jul 7, 2024
2 parents 1918b35 + 2efe4d8 commit a5d9a1f
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 6 deletions.
7 changes: 5 additions & 2 deletions src/main/java/com/hana/hanalink/chat/config/MongoConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,23 @@

import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;

@Configuration
@RequiredArgsConstructor
public class MongoConfig {

@Bean
public MongoClient reactiveMongoClient() {
return MongoClients.create("mongodb://52.79.132.3:27017");
String connectionString = "mongodb://52.79.132.3:27017";
return MongoClients.create(connectionString);
}

@Bean
public ReactiveMongoTemplate reactiveMongoTemplate() {
return new ReactiveMongoTemplate(reactiveMongoClient(), "chat");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import lombok.RequiredArgsConstructor;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
import org.springframework.messaging.simp.SimpMessageSendingOperations;
import org.springframework.stereotype.Controller;
import reactor.core.publisher.Mono;
Expand All @@ -22,7 +21,10 @@ public class ChatController {
*/
@MessageMapping("/send")
public Mono<Void> message(@Payload ChatDto chatDto) {
simpMessageSendingOperations.convertAndSend("topic" + chatDto.getRoomId(), chatDto);
simpMessageSendingOperations.convertAndSend("/topic/" + chatDto.getRoomId(), chatDto);
return chatService.saveChat(chatDto.toEntity()).then();
}



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.hana.hanalink.chat.controller;

import com.hana.hanalink.chat.domain.Chat;
import com.hana.hanalink.chat.service.ChatService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@RestController
@RequestMapping("/api/v1/chat")
@RequiredArgsConstructor
public class ChatRestController {
private final ChatService chatService;

@GetMapping("/{roomId}")
public Flux<Chat> getChatsByRoomId(@PathVariable String roomId) {
return chatService.getChatsByRoomId(roomId);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package com.hana.hanalink.chat.repository;

import com.hana.hanalink.chat.domain.Chat;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;

public interface ChatRepository extends MongoRepository<Chat, String> {

@Repository
public interface ChatRepository extends ReactiveMongoRepository<Chat, String> {
Flux<Chat> findByRoomId(String roomId);
}
10 changes: 10 additions & 0 deletions src/main/java/com/hana/hanalink/chat/service/ChatService.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,27 @@
package com.hana.hanalink.chat.service;

import com.hana.hanalink.chat.domain.Chat;
import com.hana.hanalink.chat.repository.ChatRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;



@Service
@RequiredArgsConstructor
public class ChatService {
private final ReactiveMongoTemplate reactiveMongoTemplate;
private final ChatRepository chatRepository;


public Mono<Chat> saveChat(Chat chat) {
return reactiveMongoTemplate.save(chat);
}

public Flux<Chat> getChatsByRoomId(String roomId) {
return chatRepository.findByRoomId(roomId);
}
}

0 comments on commit a5d9a1f

Please sign in to comment.