diff --git a/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/domain/ChannelChatMessage.java b/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/domain/ChannelChatMessage.java index 201c965d..cecf8fde 100644 --- a/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/domain/ChannelChatMessage.java +++ b/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/domain/ChannelChatMessage.java @@ -2,8 +2,10 @@ import com.bbebig.commonmodule.kafka.dto.*; import jakarta.persistence.Id; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.springframework.data.mongodb.core.mapping.Document; import java.time.LocalDateTime; @@ -14,6 +16,8 @@ @Data @Document(collection = "channel_chat_messages") @Builder +@NoArgsConstructor +@AllArgsConstructor public class ChannelChatMessage { @Id @@ -37,7 +41,8 @@ public class ChannelChatMessage { private MessageType messageType; - private Boolean isDeleted; + @Builder.Default + private Boolean deleted = false; public void updateContent(String content) { this.content = content; @@ -45,12 +50,12 @@ public void updateContent(String content) { } public void delete() { - this.isDeleted = true; + this.deleted = true; this.updatedAt = LocalDateTime.now(); } public boolean isDeleted() { - return this.isDeleted; + return deleted != null ? deleted : false; // null이면 기본값 false 반환 } } diff --git a/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/domain/DmChatMessage.java b/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/domain/DmChatMessage.java index cea81a82..3966320e 100644 --- a/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/domain/DmChatMessage.java +++ b/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/domain/DmChatMessage.java @@ -2,8 +2,10 @@ import com.bbebig.commonmodule.kafka.dto.ChatFileDto; import jakarta.persistence.Id; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.springframework.data.mongodb.core.mapping.Document; import java.time.LocalDateTime; @@ -14,6 +16,8 @@ @Data @Document(collection = "dm_chat_messages") @Builder +@NoArgsConstructor +@AllArgsConstructor public class DmChatMessage { @Id @@ -37,7 +41,8 @@ public class DmChatMessage { private MessageType messageType; - private Boolean isDeleted; + @Builder.Default + private Boolean deleted = false; public void updateContent(String content) { this.content = content; @@ -45,11 +50,11 @@ public void updateContent(String content) { } public void delete() { - this.isDeleted = true; + this.deleted = true; this.updatedAt = LocalDateTime.now(); } public boolean isDeleted() { - return this.isDeleted; + return this.deleted; } } diff --git a/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/dto/HistoryDtoConverter.java b/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/dto/HistoryDtoConverter.java index d6943902..935b096c 100644 --- a/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/dto/HistoryDtoConverter.java +++ b/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/dto/HistoryDtoConverter.java @@ -23,6 +23,7 @@ public static ChannelChatMessage convertDtoToChannelChatMessage(ChatMessageDto m .createdAt(messageDto.getCreatedAt() != null ? messageDto.getCreatedAt() : null) .updatedAt(messageDto.getType() == MessageEventType.MESSAGE_UPDATE ? messageDto.getUpdatedAt() : null) .messageType(messageDto.getMessageType()) + .deleted(messageDto.getType() == MessageEventType.MESSAGE_DELETE) .build(); } @@ -38,6 +39,7 @@ public static DmChatMessage convertDtoToDmChatMessage(ChatMessageDto messageDto) .createdAt(messageDto.getCreatedAt() != null ? messageDto.getCreatedAt() : null) .updatedAt(messageDto.getType() == MessageEventType.MESSAGE_UPDATE ? messageDto.getUpdatedAt() : null) .messageType(messageDto.getMessageType()) + .deleted(messageDto.getType() == MessageEventType.MESSAGE_DELETE) .build(); } diff --git a/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/service/HistoryService.java b/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/service/HistoryService.java index 858ed742..63f02eff 100644 --- a/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/service/HistoryService.java +++ b/src/backend/search-server/src/main/java/com/bbebig/searchserver/domain/history/service/HistoryService.java @@ -55,10 +55,12 @@ public void saveChannelMessage(ChatMessageDto messageDto) { if (ChatType.CHANNEL.equals(messageDto.getChatType())) { Long channelId = messageDto.getChannelId(); - if (serverRedisRepository.existsChannelMessageList(channelId)) { + if (!serverRedisRepository.existsChannelMessageList(channelId) || + serverRedisRepository.getChannelMessageList(channelId).isEmpty()) { cacheChannelMessage(channelId); + } else { + serverRedisRepository.saveChannelMessage(channelId, message); } - serverRedisRepository.saveChannelMessage(channelId, message); } } @@ -278,7 +280,9 @@ public List getCachedChannelMessages(Long channelId) { private void cacheChannelMessage(Long channelId) { List messages = channelChatMessageRepository.findByChannelId(channelId, PageRequest.of(0, 300, Sort.by(Sort.Order.desc("id")))); - serverRedisRepository.saveChannelMessages(channelId, messages); + if (messages != null && !messages.isEmpty()) { + serverRedisRepository.saveChannelMessages(channelId, messages); + } } private ServerLastInfoResponseDto getServerLastInfo(Long memberId, Long serverId) {