// 게시글 알림 신청 버튼이 off 상태일 때 적용 (등록)
@Override
public void createSubscribe(SubscribeRequestDto subscribeRequestDto) {
if(subscribeRepository.findByAuthorUuidAndSubscriberUuid(
subscribeRequestDto.getAuthorUuid(),
subscribeRequestDto.getSubscriberUuid()
) == null) {
subscribeRepository.save(subscribeRequestDto.toEntity());
}else {
throw new IllegalArgumentException("이미 알림을 받고 있는 사용자입니다.");
}
}
Front 측 요구에 따라 uuid(알림 신청하는 본인), authorUuid(게시글 작성하는 유저) 에 대해 정보가 존재하는지 확인 하는 GET api 생성
uuid는 header 처리, authorUuid는 param 처리
응답 vo 및 dto 필요 (boolean 값 반환)
Service
@Override
public SubscribeStateResponseDto existsByAuthorUuidAndSubscriberUuid(String authorUuid, String subscriberUuid) {
boolean isExistSubscriber = subscribeRepository.existsByAuthorUuidAndSubscriberUuid(authorUuid, subscriberUuid);
if (isExistSubscriber) {
return SubscribeStateResponseDto.toDto(isExistSubscriber);
} else {
//throw new IllegalArgumentException("게시글 알림 신청을 하지 않은 사용자입니다.");
throw new BaseException(BaseResponseStatus.NO_EXIST_NOTIFICATION_SETTING);
}
}
@Operation(summary = "구독 여부 조회 API", description = "해당 게시글 글쓴이의 알림 신청 여부를 조회합니다.", tags = {"Subscribe"})
@GetMapping("/isSubscribed")
public BaseResponse<SubscribeStateResponseVo> isSubscribed(
@RequestHeader String uuid,
@RequestParam String authorUuid
) {
return new BaseResponse<>(subscribeService.existsByAuthorUuidAndSubscriberUuid(authorUuid, uuid).toVo());
}