메세지 좋아요 테이블에는 같은 member_id, message_id가 공존하면 안됩니다.
기존 코드
public MessageLikeResponseDto likeMessage(Long memberId, Long rollingpaperId, Long messageId) {
// 메세지 좋아요 대상 "메세지"를 찾는다.
final Message message = messageRepository.findById(messageId)
.orElseThrow(() -> new NotFoundMessageException(messageId));
// "메세지 좋아요" 테이블에 존재하면 에러를 던진다.
if (messageLikeRepository.existsByMemberIdAndMessageId(memberId, messageId)) {
throw new InvalidLikeMessageException(messageId, messageId);
}
// 메세지 좋아요 추가
message.like();
messageLikeRepository.save(new MessageLike(memberId, rollingpaperId, messageId));
return new MessageLikeResponseDto(message.getLikes(), true);
}
기능 상세
메세지 좋아요에 엄청난 연타를 해보았을 때 다음과같은 이슈가 발생하였습니다.
중복된 데이터가 쌓였습니다!
기존 코드