Skip to content

Commit dfd4968

Browse files
committed
refactor: 필요없는 데이터베이스 접근 로직 삭제 (ReadStatus)
1 parent fef5055 commit dfd4968

File tree

7 files changed

+34
-32
lines changed

7 files changed

+34
-32
lines changed

codeit-bootcamp-spring/1-sprint-mission/src/main/java/com/sprint/mission/discodeit/application/service/channel/JCFChannelService.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public ChannelCreateResponseDto createPrivateChannel(UUID userId, CreateChannelR
6060

6161
@Override
6262
public void joinChannel(UUID invitedUserId, InviteChannelRequestDto requestDto) {
63-
User foundUser = userService.findOneByIdOrThrow(invitedUserId);
63+
User foundUser = userService.findOneByUserIdOrThrow(invitedUserId);
6464
Channel foundChannel = findOneByChannelIdOrThrow(requestDto.channelId());
6565
throwIsAlreadyJoinUser(foundUser, foundChannel);
6666
foundChannel.join(foundUser);
@@ -88,7 +88,7 @@ public Channel findOneByChannelIdOrThrow(UUID id) {
8888

8989
@Override
9090
public void changeSubject(UUID userId, ChangeChannelSubjectRequestDto requestDto) {
91-
User foundUser = userService.findOneByIdOrThrow(userId);
91+
User foundUser = userService.findOneByUserIdOrThrow(userId);
9292
Channel foundChannel = findOneByChannelIdOrThrow(requestDto.channelId());
9393
throwIsNotManager(foundUser, foundChannel);
9494
foundChannel.updateSubject(requestDto.subject());
@@ -97,7 +97,7 @@ public void changeSubject(UUID userId, ChangeChannelSubjectRequestDto requestDto
9797

9898
@Override
9999
public void changeChannelName(UUID userId, ChangeChannelNameRequestDto requestDto) {
100-
User foundUser = userService.findOneByIdOrThrow(userId);
100+
User foundUser = userService.findOneByUserIdOrThrow(userId);
101101
Channel foundChannel = findOneByChannelIdOrThrow(requestDto.channelId());
102102
throwIsNotManager(foundUser, foundChannel);
103103
foundChannel.updateName(requestDto.channelName());
@@ -106,7 +106,7 @@ public void changeChannelName(UUID userId, ChangeChannelNameRequestDto requestDt
106106

107107
@Override
108108
public void deleteChannel(UUID userId, DeleteChannelRequestDto requestDto) {
109-
User foundUser = userService.findOneByIdOrThrow(userId);
109+
User foundUser = userService.findOneByUserIdOrThrow(userId);
110110
Channel foundChannel = findOneByChannelIdOrThrow(requestDto.channelId());
111111
throwIsNotManager(foundUser, foundChannel);
112112
readStatusRepository.deleteByChannel(foundChannel);
@@ -141,7 +141,7 @@ private void createAndSaveReadStatus(User foundUser, Channel savedChannel) {
141141
}
142142

143143
private Channel createChannelWithVisibility(UUID userId, CreateChannelRequestDto requestDto) {
144-
User foundUser = userService.findOneByIdOrThrow(userId);
144+
User foundUser = userService.findOneByUserIdOrThrow(userId);
145145
Channel createChannel = null;
146146
if (requestDto.visibility() == ChannelVisibility.PUBLIC) {
147147
createChannel = Channel.ofPublicChannel(requestDto.name(), requestDto.channelType(), foundUser);
@@ -150,9 +150,9 @@ private Channel createChannelWithVisibility(UUID userId, CreateChannelRequestDto
150150
}
151151
// ====> 삼항 연산자와 if 문 분기처리 중 어떤 것을 더 선호해야할까요? 제가 생각하기에는 삼항 연산자가 보기 더 편한것 같습니다.
152152
// 다음 미션에서는 둘 중 하나 지워두겠습니다.
153-
// createChannel = requestDto.visibility() == ChannelVisibility.PUBLIC ?
154-
// Channel.ofPublicChannel(requestDto.name(), requestDto.channelType(), foundUser) :
155-
// Channel.ofPrivateChannel(foundUser, requestDto.channelType());
153+
// createChannel = requestDto.visibility() == ChannelVisibility.PUBLIC
154+
// ? Channel.ofPublicChannel(requestDto.name(), requestDto.channelType(), foundUser)
155+
// : Channel.ofPrivateChannel(foundUser, requestDto.channelType());
156156
Channel savedChannel = channelRepository.save(createChannel);
157157
createAndSaveReadStatus(foundUser, savedChannel);
158158
return savedChannel;

codeit-bootcamp-spring/1-sprint-mission/src/main/java/com/sprint/mission/discodeit/application/service/interfaces/MessageService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ public interface MessageService {
1515

1616
void deleteMessage(UUID userId, DeleteMessageRequestDto requestDto);
1717

18-
Message findOneByIdOrThrow(UUID uuid);
18+
Message findOneByMessageIdOrThrow(UUID uuid);
1919

2020
}

codeit-bootcamp-spring/1-sprint-mission/src/main/java/com/sprint/mission/discodeit/application/service/interfaces/UserService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public interface UserService {
1414

1515
void login(LoginRequestDto requestDto);
1616

17-
User findOneByIdOrThrow(UUID userId);
17+
User findOneByUserIdOrThrow(UUID userId);
1818

1919
List<UserResponseDto> findAll();
2020

codeit-bootcamp-spring/1-sprint-mission/src/main/java/com/sprint/mission/discodeit/application/service/message/JCFMessageService.java

+12-7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.sprint.mission.discodeit.application.service.interfaces.ChannelService;
88
import com.sprint.mission.discodeit.application.service.interfaces.MessageService;
99
import com.sprint.mission.discodeit.application.service.interfaces.UserService;
10+
import com.sprint.mission.discodeit.application.service.readstatus.ReadStatusService;
1011
import com.sprint.mission.discodeit.domain.channel.Channel;
1112
import com.sprint.mission.discodeit.domain.message.Message;
1213
import com.sprint.mission.discodeit.domain.message.exception.MessageNotFoundException;
@@ -20,44 +21,48 @@ public class JCFMessageService implements MessageService {
2021
private final MessageRepository messageRepository;
2122
private final ChannelService channelService;
2223
private final UserService userService;
24+
private final ReadStatusService readStatusService;
2325

2426
public JCFMessageService(
2527
MessageRepository messageRepository,
2628
ChannelService channelService,
27-
UserService userService
29+
UserService userService,
30+
ReadStatusService readStatusService
2831
) {
2932
this.messageRepository = messageRepository;
3033
this.channelService = channelService;
3134
this.userService = userService;
35+
this.readStatusService = readStatusService;
3236
}
3337

3438
@Override
3539
public MessageResponseDto createMessage(CreateMessageRequestDto requestDto) {
36-
User sender = userService.findOneByIdOrThrow(requestDto.userId());
40+
User sender = userService.findOneByUserIdOrThrow(requestDto.userId());
3741
Channel destinationChannel = channelService.findOneByChannelIdOrThrow(requestDto.destinationChannelId());
3842
Message createMessage = messageRepository.save(new Message(sender, destinationChannel, requestDto.content()));
3943
return MessageResponseDto.from(createMessage);
4044
}
4145

4246
@Override
4347
public void updateMessage(UUID userId, UpdateMessageContentRequestDto requestDto) {
44-
User foundUser = userService.findOneByIdOrThrow(userId);
45-
Message foundMessage = findOneByIdOrThrow(requestDto.messageId());
48+
User foundUser = userService.findOneByUserIdOrThrow(userId);
49+
Message foundMessage = findOneByMessageIdOrThrow(requestDto.messageId());
4650
throwIsNotSender(foundUser, foundMessage);
4751
foundMessage.updateContent(requestDto.content());
52+
readStatusService.updateLastReadTime(foundUser, foundMessage.getDestinationChannel());
4853
messageRepository.save(foundMessage);
4954
}
5055

5156
@Override
5257
public void deleteMessage(UUID userId, DeleteMessageRequestDto requestDto) {
53-
User foundUser = userService.findOneByIdOrThrow(userId);
54-
Message foundMessage = findOneByIdOrThrow(requestDto.messageId());
58+
User foundUser = userService.findOneByUserIdOrThrow(userId);
59+
Message foundMessage = findOneByMessageIdOrThrow(requestDto.messageId());
5560
throwIsNotSender(foundUser, foundMessage);
5661
messageRepository.deleteById(foundMessage.getId());
5762
}
5863

5964
@Override
60-
public Message findOneByIdOrThrow(UUID messageId) {
65+
public Message findOneByMessageIdOrThrow(UUID messageId) {
6166
return messageRepository.findById(messageId)
6267
.orElseThrow(() -> new MessageNotFoundException(ErrorCode.NOT_FOUND));
6368
}
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package com.sprint.mission.discodeit.application.service.readstatus;
22

3-
import com.sprint.mission.discodeit.application.dto.readstatus.ReadStatusUpdateRequestDto;
43
import com.sprint.mission.discodeit.application.service.interfaces.ChannelService;
54
import com.sprint.mission.discodeit.application.service.interfaces.UserService;
65
import com.sprint.mission.discodeit.domain.channel.Channel;
76
import com.sprint.mission.discodeit.domain.readStatus.ReadStatus;
87
import com.sprint.mission.discodeit.domain.user.User;
8+
import com.sprint.mission.discodeit.global.error.ErrorCode;
9+
import com.sprint.mission.discodeit.global.error.exception.EntityNotFoundException;
910
import com.sprint.mission.discodeit.repository.readstatus.interfaces.ReadStatusRepository;
1011
import java.time.Instant;
11-
import java.util.Optional;
12-
import java.util.UUID;
1312

1413
public class ReadStatusService {
1514

@@ -27,15 +26,10 @@ public ReadStatusService(
2726
this.channelService = channelService;
2827
}
2928

30-
public void updateLastReadTime(UUID userId, ReadStatusUpdateRequestDto requestDto) {
31-
User foundUser = userService.findOneByIdOrThrow(userId);
32-
Channel foundChannel = channelService.findOneByChannelIdOrThrow(requestDto.channelId());
33-
ReadStatus readStatus = findOneByUserIdAndChannelId(foundUser, foundChannel).orElseGet(() -> new ReadStatus(foundUser, foundChannel));
29+
public void updateLastReadTime(User user, Channel channel) {
30+
ReadStatus readStatus = readStatusRepository.findOneByUserIdAndChannelId(user, channel)
31+
.orElseThrow(() -> new EntityNotFoundException(ErrorCode.NOT_FOUND));
3432
readStatus.updateLastReadAt(Instant.now());
3533
readStatusRepository.save(readStatus);
3634
}
37-
38-
public Optional<ReadStatus> findOneByUserIdAndChannelId(User foundUser, Channel foundChannel) {
39-
return readStatusRepository.findOneByUserIdAndChannelId(foundUser, foundChannel);
40-
}
4135
}

codeit-bootcamp-spring/1-sprint-mission/src/main/java/com/sprint/mission/discodeit/application/service/user/JCFUserService.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.sprint.mission.discodeit.application.dto.user.LoginRequestDto;
66
import com.sprint.mission.discodeit.application.dto.user.UserResponseDto;
77
import com.sprint.mission.discodeit.application.dto.user.joinUserRequestDto;
8-
import com.sprint.mission.discodeit.application.service.interfaces.ChannelService;
98
import com.sprint.mission.discodeit.application.service.interfaces.UserService;
109
import com.sprint.mission.discodeit.application.service.user.converter.UserConverter;
1110
import com.sprint.mission.discodeit.application.service.userstatus.UserStatusService;
@@ -72,7 +71,7 @@ public void login(LoginRequestDto requestDto) {
7271
}
7372

7473
@Override
75-
public User findOneByIdOrThrow(UUID uuid) {
74+
public User findOneByUserIdOrThrow(UUID uuid) {
7675
return userRepository.findOneById(uuid)
7776
.orElseThrow(() -> new UserNotFoundException(ErrorCode.NOT_FOUND));
7877
}
@@ -91,14 +90,14 @@ public List<UserResponseDto> findAll() {
9190
@Override
9291
public void changePassword(UUID userId, ChangePasswordRequestDto requestDto) {
9392
PasswordValidator.validateOrThrow(requestDto.password());
94-
User foundUser = findOneByIdOrThrow(userId);
93+
User foundUser = findOneByUserIdOrThrow(userId);
9594
foundUser.updatePassword(passwordEncoder.encode(requestDto.password()));
9695
userRepository.save(foundUser);
9796
}
9897

9998
@Override
10099
public void quitUser(UUID userId) {
101-
User foundUser = findOneByIdOrThrow(userId);
100+
User foundUser = findOneByUserIdOrThrow(userId);
102101
List<Channel> channels = channelRepository.findAllByUserId(userId);
103102
channels.forEach(channel -> channel.quitChannel(foundUser));
104103
userStatusService.delete(foundUser);

codeit-bootcamp-spring/1-sprint-mission/src/main/java/com/sprint/mission/discodeit/domain/message/Message.java

+4
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ public UUID getDestinationChannelId() {
6363
return destinationChannel.getId();
6464
}
6565

66+
public Channel getDestinationChannel() {
67+
return destinationChannel;
68+
}
69+
6670
@Override
6771
public boolean equals(Object o) {
6872
if (this == o) {

0 commit comments

Comments
 (0)