13
13
import su .foxogram .exceptions .cdn .UploadFailedException ;
14
14
import su .foxogram .exceptions .member .MissingPermissionsException ;
15
15
import su .foxogram .exceptions .message .MessageNotFoundException ;
16
- import su .foxogram .models .Channel ;
17
- import su .foxogram .models .Member ;
18
- import su .foxogram .models .Message ;
19
- import su .foxogram .models .User ;
16
+ import su .foxogram .models .*;
17
+ import su .foxogram .repositories .AttachmentRepository ;
20
18
import su .foxogram .repositories .ChannelRepository ;
21
19
import su .foxogram .repositories .MemberRepository ;
22
20
import su .foxogram .repositories .MessageRepository ;
@@ -40,13 +38,16 @@ public class MessagesService {
40
38
41
39
private final MemberRepository memberRepository ;
42
40
41
+ private final AttachmentRepository attachmentRepository ;
42
+
43
43
@ Autowired
44
- public MessagesService (MessageRepository messageRepository , StorageService storageService , RabbitService rabbitService , ChannelRepository channelRepository , MemberRepository memberRepository ) {
44
+ public MessagesService (MessageRepository messageRepository , StorageService storageService , RabbitService rabbitService , ChannelRepository channelRepository , MemberRepository memberRepository , AttachmentRepository attachmentRepository ) {
45
45
this .messageRepository = messageRepository ;
46
46
this .storageService = storageService ;
47
47
this .rabbitService = rabbitService ;
48
48
this .channelRepository = channelRepository ;
49
49
this .memberRepository = memberRepository ;
50
+ this .attachmentRepository = attachmentRepository ;
50
51
}
51
52
52
53
public List <MessageDTO > getMessages (long before , int limit , Channel channel ) {
@@ -55,18 +56,25 @@ public List<MessageDTO> getMessages(long before, int limit, Channel channel) {
55
56
log .info ("Messages ({}, {}) in channel ({}) found successfully" , limit , before , channel .getId ());
56
57
57
58
return messagesArray .reversed ().stream ()
58
- .map (MessageDTO ::new )
59
+ .map (message -> {
60
+ List <Attachment > attachments = new ArrayList <>();
61
+ message .getAttachments ().forEach (attachment -> attachments .add (attachmentRepository .findById (attachment )));
62
+ return new MessageDTO (message , attachments );
63
+ })
59
64
.collect (Collectors .toList ());
60
65
}
61
66
62
- public Message getMessage (long id , Channel channel ) throws MessageNotFoundException {
67
+ public MessageDTO getMessage (long id , Channel channel ) throws MessageNotFoundException {
63
68
Message message = messageRepository .findByChannelAndId (channel , id );
64
69
65
70
if (message == null ) throw new MessageNotFoundException ();
66
71
72
+ List <Attachment > attachments = new ArrayList <>();
73
+ message .getAttachments ().forEach (attachment -> attachments .add (attachmentRepository .findById (attachment )));
74
+
67
75
log .info ("Message ({}) in channel ({}) found successfully" , id , channel .getId ());
68
76
69
- return message ;
77
+ return new MessageDTO ( message , attachments ) ;
70
78
}
71
79
72
80
public Message addMessage (Channel channel , User user , MessageCreateDTO body ) throws UploadFailedException , JsonProcessingException {
@@ -78,7 +86,7 @@ public Message addMessage(Channel channel, User user, MessageCreateDTO body) thr
78
86
uploadedAttachments = body .getAttachments ().stream ()
79
87
.map (attachment -> {
80
88
try {
81
- return uploadAttachment (attachment );
89
+ return uploadAttachment (attachment ). getId () ;
82
90
} catch (UploadFailedException e ) {
83
91
throw new RuntimeException (e );
84
92
}
@@ -92,7 +100,7 @@ public Message addMessage(Channel channel, User user, MessageCreateDTO body) thr
92
100
Message message = new Message (channel , body .getContent (), member , uploadedAttachments );
93
101
messageRepository .save (message );
94
102
95
- rabbitService .send (getRecipients (channel ), new MessageDTO (message ), GatewayConstants .Event .MESSAGE_CREATE .getValue ());
103
+ rabbitService .send (getRecipients (channel ), new MessageDTO (message , null ), GatewayConstants .Event .MESSAGE_CREATE .getValue ());
96
104
log .info ("Message ({}) to channel ({}) created successfully" , message .getId (), channel .getId ());
97
105
98
106
return message ;
@@ -120,13 +128,13 @@ public Message editMessage(long id, Channel channel, Member member, MessageCreat
120
128
message .setContent (content );
121
129
messageRepository .save (message );
122
130
123
- rabbitService .send (getRecipients (channel ), new MessageDTO (message ), GatewayConstants .Event .MESSAGE_UPDATE .getValue ());
131
+ rabbitService .send (getRecipients (channel ), new MessageDTO (message , null ), GatewayConstants .Event .MESSAGE_UPDATE .getValue ());
124
132
log .info ("Message ({}) in channel ({}) edited successfully" , id , channel .getId ());
125
133
126
134
return message ;
127
135
}
128
136
129
- private String uploadAttachment (MultipartFile attachment ) throws UploadFailedException {
137
+ private Attachment uploadAttachment (MultipartFile attachment ) throws UploadFailedException {
130
138
try {
131
139
return storageService .uploadToMinio (attachment , StorageConstants .ATTACHMENTS_BUCKET );
132
140
} catch (Exception e ) {
0 commit comments