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,27 @@ 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
+ if (message .getAttachments () != null ) {
62
+ message .getAttachments ().forEach (attachment -> attachments .add (attachmentRepository .findById (attachment )));
63
+ }
64
+ return new MessageDTO (message , attachments );
65
+ })
59
66
.collect (Collectors .toList ());
60
67
}
61
68
62
- public Message getMessage (long id , Channel channel ) throws MessageNotFoundException {
69
+ public MessageDTO getMessage (long id , Channel channel ) throws MessageNotFoundException {
63
70
Message message = messageRepository .findByChannelAndId (channel , id );
64
71
65
72
if (message == null ) throw new MessageNotFoundException ();
66
73
74
+ List <Attachment > attachments = new ArrayList <>();
75
+ message .getAttachments ().forEach (attachment -> attachments .add (attachmentRepository .findById (attachment )));
76
+
67
77
log .info ("Message ({}) in channel ({}) found successfully" , id , channel .getId ());
68
78
69
- return message ;
79
+ return new MessageDTO ( message , attachments ) ;
70
80
}
71
81
72
82
public Message addMessage (Channel channel , User user , MessageCreateDTO body ) throws UploadFailedException , JsonProcessingException {
@@ -78,7 +88,7 @@ public Message addMessage(Channel channel, User user, MessageCreateDTO body) thr
78
88
uploadedAttachments = body .getAttachments ().stream ()
79
89
.map (attachment -> {
80
90
try {
81
- return uploadAttachment (attachment );
91
+ return uploadAttachment (attachment ). getId () ;
82
92
} catch (UploadFailedException e ) {
83
93
throw new RuntimeException (e );
84
94
}
@@ -92,7 +102,7 @@ public Message addMessage(Channel channel, User user, MessageCreateDTO body) thr
92
102
Message message = new Message (channel , body .getContent (), member , uploadedAttachments );
93
103
messageRepository .save (message );
94
104
95
- rabbitService .send (getRecipients (channel ), new MessageDTO (message ), GatewayConstants .Event .MESSAGE_CREATE .getValue ());
105
+ rabbitService .send (getRecipients (channel ), new MessageDTO (message , null ), GatewayConstants .Event .MESSAGE_CREATE .getValue ());
96
106
log .info ("Message ({}) to channel ({}) created successfully" , message .getId (), channel .getId ());
97
107
98
108
return message ;
@@ -120,13 +130,13 @@ public Message editMessage(long id, Channel channel, Member member, MessageCreat
120
130
message .setContent (content );
121
131
messageRepository .save (message );
122
132
123
- rabbitService .send (getRecipients (channel ), new MessageDTO (message ), GatewayConstants .Event .MESSAGE_UPDATE .getValue ());
133
+ rabbitService .send (getRecipients (channel ), new MessageDTO (message , null ), GatewayConstants .Event .MESSAGE_UPDATE .getValue ());
124
134
log .info ("Message ({}) in channel ({}) edited successfully" , id , channel .getId ());
125
135
126
136
return message ;
127
137
}
128
138
129
- private String uploadAttachment (MultipartFile attachment ) throws UploadFailedException {
139
+ private Attachment uploadAttachment (MultipartFile attachment ) throws UploadFailedException {
130
140
try {
131
141
return storageService .uploadToMinio (attachment , StorageConstants .ATTACHMENTS_BUCKET );
132
142
} catch (Exception e ) {
0 commit comments