-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChatMessageResponse.java
More file actions
63 lines (57 loc) · 2.28 KB
/
ChatMessageResponse.java
File metadata and controls
63 lines (57 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package app.dearobjet.backend.domain.chat.dto;
import app.dearobjet.backend.domain.chat.entity.ChatMessage;
import app.dearobjet.backend.domain.chat.entity.MessageType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* 채팅 메시지 응답 DTO
*/
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ChatMessageResponse {
private Long id;
private String roomId;
private Long senderId;
private String senderName;
private String senderProfileImage;
private String content;
private MessageType messageType;
private LocalDateTime createdAt;
private boolean isMyMessage;
/**
* 엔티티로부터 DTO 생성
*/
public static ChatMessageResponse from(ChatMessage message, Long currentUserId) {
return ChatMessageResponse.builder()
.id(message.getId())
.roomId(message.getRoomId())
.senderId(message.getSender() != null ? message.getSender().getId() : null)
.senderName(message.getSender() != null ? message.getSender().getName() : "시스템")
.senderProfileImage(message.getSender() != null ? message.getSender().getProfileImage() : null)
.content(message.getContent())
.messageType(message.getMessageType())
.createdAt(message.getCreatedAt())
.isMyMessage(message.getSender() != null && message.getSender().getId().equals(currentUserId))
.build();
}
/**
* Redis 메시지로부터 DTO 생성
*/
public static ChatMessageResponse from(RedisChatMessageDto redisMessage, Long currentUserId) {
return ChatMessageResponse.builder()
.id(redisMessage.getMessageId())
.roomId(redisMessage.getRoomId())
.senderId(redisMessage.getSenderId())
.senderName(redisMessage.getSenderName())
.content(redisMessage.getContent())
.messageType(redisMessage.getMessageType())
.createdAt(redisMessage.getTimestamp())
.isMyMessage(redisMessage.getSenderId() != null && redisMessage.getSenderId().equals(currentUserId))
.build();
}
}