Skip to content

Commit

Permalink
Add chatRoom service
Browse files Browse the repository at this point in the history
  • Loading branch information
juncevich committed Dec 18, 2023
1 parent 8ba8fde commit 66bb7b6
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 0 deletions.
@@ -0,0 +1,20 @@
package com.relay.chatservice.chatroom;

import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Document
public class ChatRoom {
@Id
private String id;
private String chatId;
private String senderId;
private String recipientId;

}
@@ -0,0 +1,10 @@
package com.relay.chatservice.chatroom;

import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.Optional;

public interface ChatRoomRepository extends MongoRepository<ChatRoom, String> {

Optional<ChatRoom> findBySenderIdAndRecipientId(String senderId, String recipientId);
}
@@ -0,0 +1,53 @@
package com.relay.chatservice.chatroom;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Service
@RequiredArgsConstructor
public class ChatRoomService {

private final ChatRoomRepository chatRoomRepository;


public Optional<String> getChatRoomId(
String senderId,
String recipientId,
boolean createNewRoomIfNotExists
) {
return chatRoomRepository.findBySenderIdAndRecipientId(senderId, recipientId)
.map(ChatRoom::getChatId)
.or(
() -> {
if (createNewRoomIfNotExists) {
var chatId = createChatId(senderId, recipientId);
return Optional.of(chatId);
}
return Optional.empty();
}
);
}

private String createChatId(String senderId, String recipientId) {
var chatId = String.format("%s_%s", senderId, recipientId);

ChatRoom senderRecipient = ChatRoom.builder()
.chatId(chatId)
.senderId(senderId)
.recipientId(recipientId)
.build();

ChatRoom recipientSender = ChatRoom.builder()
.chatId(chatId)
.senderId(recipientId)
.recipientId(senderId)
.build();

chatRoomRepository.save(senderRecipient);
chatRoomRepository.save(recipientSender);

return chatId;
}
}

0 comments on commit 66bb7b6

Please sign in to comment.