Skip to content

Commit dbcfea3

Browse files
authored
refactor: 채팅방 생성 동기식으로 변경 (#474)
* refactor: 채팅방 생성 동기식으로 변경 * test: 비동기 테스트를 위한 코드 제거 * refactor: 사용하지 않는 코드 제거
1 parent 3f8c493 commit dbcfea3

File tree

7 files changed

+32
-68
lines changed

7 files changed

+32
-68
lines changed

src/main/java/com/example/solidconnection/chat/repository/ChatRoomRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ SELECT COUNT(cm) FROM ChatMessage cm
3434
""")
3535
long countUnreadMessages(@Param("chatRoomId") long chatRoomId, @Param("userId") long userId);
3636

37-
boolean existsByMentoringId(long mentoringId);
37+
ChatRoom findByMentoringId(long mentoringId);
3838

3939
List<ChatRoom> findAllByMentoringIdIn(List<Long> mentoringIds);
4040
}

src/main/java/com/example/solidconnection/chat/service/ChatService.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,20 @@ public void sendChatMessage(ChatMessageSendRequest chatMessageSendRequest, long
174174
}
175175

176176
@Transactional
177-
public void createMentoringChatRoom(Long mentoringId, Long mentorId, Long menteeId) {
178-
if (chatRoomRepository.existsByMentoringId(mentoringId)) {
179-
return;
177+
public Long createMentoringChatRoom(Long mentoringId, Long mentorId, Long menteeId) {
178+
ChatRoom existingChatRoom = chatRoomRepository.findByMentoringId(mentoringId);
179+
if (existingChatRoom != null) {
180+
return existingChatRoom.getId();
180181
}
181182

183+
// 새 채팅방 생성
182184
ChatRoom chatRoom = new ChatRoom(mentoringId, false);
183185
chatRoom = chatRoomRepository.save(chatRoom);
186+
184187
ChatParticipant mentorParticipant = new ChatParticipant(mentorId, chatRoom);
185188
ChatParticipant menteeParticipant = new ChatParticipant(menteeId, chatRoom);
186189
chatParticipantRepository.saveAll(List.of(mentorParticipant, menteeParticipant));
190+
191+
return chatRoom.getId();
187192
}
188193
}

src/main/java/com/example/solidconnection/mentor/dto/MentoringApprovedEvent.java

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package com.example.solidconnection.mentor.dto;
22

3+
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
4+
35
import com.example.solidconnection.mentor.domain.Mentoring;
6+
import com.fasterxml.jackson.annotation.JsonInclude;
47

58
public record MentoringConfirmResponse(
6-
long mentoringId
9+
long mentoringId,
10+
11+
@JsonInclude(NON_NULL)
12+
Long chatRoomId
713
) {
814

9-
public static MentoringConfirmResponse from(Mentoring mentoring) {
10-
return new MentoringConfirmResponse(mentoring.getId());
15+
public static MentoringConfirmResponse from(Mentoring mentoring, Long chatRoomId) {
16+
return new MentoringConfirmResponse(mentoring.getId(), chatRoomId);
1117
}
1218
}

src/main/java/com/example/solidconnection/mentor/service/MentoringCommandService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
import static com.example.solidconnection.common.exception.ErrorCode.MENTOR_NOT_FOUND;
66
import static com.example.solidconnection.common.exception.ErrorCode.UNAUTHORIZED_MENTORING;
77

8+
import com.example.solidconnection.chat.service.ChatService;
89
import com.example.solidconnection.common.VerifyStatus;
910
import com.example.solidconnection.common.exception.CustomException;
1011
import com.example.solidconnection.mentor.domain.Mentor;
1112
import com.example.solidconnection.mentor.domain.Mentoring;
1213
import com.example.solidconnection.mentor.dto.MentoringApplyRequest;
1314
import com.example.solidconnection.mentor.dto.MentoringApplyResponse;
14-
import com.example.solidconnection.mentor.dto.MentoringApprovedEvent;
1515
import com.example.solidconnection.mentor.dto.MentoringConfirmRequest;
1616
import com.example.solidconnection.mentor.dto.MentoringConfirmResponse;
1717
import com.example.solidconnection.mentor.repository.MentorRepository;
1818
import com.example.solidconnection.mentor.repository.MentoringRepository;
1919
import lombok.RequiredArgsConstructor;
20-
import org.springframework.context.ApplicationEventPublisher;
2120
import org.springframework.stereotype.Service;
2221
import org.springframework.transaction.annotation.Transactional;
2322

@@ -27,7 +26,7 @@ public class MentoringCommandService {
2726

2827
private final MentoringRepository mentoringRepository;
2928
private final MentorRepository mentorRepository;
30-
private final ApplicationEventPublisher eventPublisher;
29+
private final ChatService chatService;
3130

3231
@Transactional
3332
public MentoringApplyResponse applyMentoring(long siteUserId, MentoringApplyRequest mentoringApplyRequest) {
@@ -49,12 +48,13 @@ public MentoringConfirmResponse confirmMentoring(long siteUserId, long mentoring
4948

5049
mentoring.confirm(mentoringConfirmRequest.status());
5150

51+
Long chatRoomId = null;
5252
if (mentoringConfirmRequest.status() == VerifyStatus.APPROVED) {
5353
mentor.increaseMenteeCount();
54-
eventPublisher.publishEvent(MentoringApprovedEvent.of(mentoringId, mentor.getSiteUserId(), mentoring.getMenteeId()));
54+
chatRoomId = chatService.createMentoringChatRoom(mentoringId, mentor.getSiteUserId(), mentoring.getMenteeId());
5555
}
5656

57-
return MentoringConfirmResponse.from(mentoring);
57+
return MentoringConfirmResponse.from(mentoring, chatRoomId);
5858
}
5959

6060
private void validateMentoringNotConfirmed(Mentoring mentoring) {

src/main/java/com/example/solidconnection/mentor/service/MentoringEventHandler.java

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/test/java/com/example/solidconnection/mentor/service/MentoringCommandServiceTest.java

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -134,23 +134,17 @@ class 멘토링_승인_거절_테스트 {
134134
assertThat(beforeChatRoom).isEmpty();
135135

136136
// when
137-
mentoringCommandService.confirmMentoring(mentorUser1.getId(), mentoring.getId(), request);
137+
MentoringConfirmResponse response = mentoringCommandService.confirmMentoring(mentorUser1.getId(), mentoring.getId(), request);
138138

139139
// then
140-
ChatRoom afterChatRoom = await()
141-
.atMost(Duration.ofSeconds(5))
142-
.pollInterval(Duration.ofMillis(100))
143-
.until(() -> chatRoomRepositoryForTest
144-
.findOneOnOneChatRoomByParticipants(mentorUser1.getId(), menteeUser.getId()),
145-
Optional::isPresent)
146-
.orElseThrow();
147-
140+
ChatRoom afterChatRoom = chatRoomRepositoryForTest.findOneOnOneChatRoomByParticipants(mentorUser1.getId(), menteeUser.getId()).orElseThrow();
148141
List<Long> participantIds = afterChatRoom.getChatParticipants().stream()
149142
.map(ChatParticipant::getSiteUserId)
150143
.toList();
151144
assertAll(
152145
() -> assertThat(afterChatRoom.isGroup()).isFalse(),
153-
() -> assertThat(participantIds).containsExactly(mentorUser1.getId(), menteeUser.getId())
146+
() -> assertThat(participantIds).containsExactly(mentorUser1.getId(), menteeUser.getId()),
147+
() -> assertThat(response.chatRoomId()).isEqualTo(afterChatRoom.getId())
154148
);
155149
}
156150

@@ -186,19 +180,14 @@ class 멘토링_승인_거절_테스트 {
186180
assertThat(beforeChatRoom).isEmpty();
187181

188182
// when
189-
mentoringCommandService.confirmMentoring(mentorUser1.getId(), mentoring.getId(), request);
183+
MentoringConfirmResponse response = mentoringCommandService.confirmMentoring(mentorUser1.getId(), mentoring.getId(), request);
190184

191185
// then
192-
await()
193-
.pollInterval(Duration.ofMillis(100))
194-
.during(Duration.ofSeconds(1))
195-
.until(() -> chatRoomRepositoryForTest
196-
.findOneOnOneChatRoomByParticipants(mentorUser1.getId(), menteeUser.getId())
197-
.isEmpty());
198-
199186
Optional<ChatRoom> afterChatRoom = chatRoomRepositoryForTest.findOneOnOneChatRoomByParticipants(mentorUser1.getId(), menteeUser.getId());
200-
assertThat(afterChatRoom).isEmpty();
201-
187+
assertAll(
188+
() -> assertThat(response.chatRoomId()).isNull(),
189+
() -> assertThat(afterChatRoom).isEmpty()
190+
);
202191
}
203192

204193
@Test

0 commit comments

Comments
 (0)