package com.izouma.nineth.service; import com.izouma.nineth.domain.NewsLike; import com.izouma.nineth.dto.PageQuery; import com.izouma.nineth.repo.NewsLikeRepo; import com.izouma.nineth.repo.NewsRepo; import com.izouma.nineth.repo.ShowroomRepo; import com.izouma.nineth.utils.JpaUtils; import lombok.AllArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import java.util.List; @Service @AllArgsConstructor public class NewsLikeService { private NewsLikeRepo newsLikeRepo; private NewsRepo newsRepo; private ShowroomRepo showroomRepo; public Page all(PageQuery pageQuery) { return newsLikeRepo.findAll(JpaUtils.toSpecification(pageQuery, NewsLike.class), JpaUtils.toPageRequest(pageQuery)); } public void like(Long userId, Long newsId) { List list = newsLikeRepo.findByUserIdAndNewsId(userId, newsId); if (!list.isEmpty()) return; newsLikeRepo.save(NewsLike.builder() .userId(userId) .newsId(newsId) .build()); newsRepo.addLike(newsId, 1); } public void unlike(Long userId, Long newsId) { List list = newsLikeRepo.findByUserIdAndNewsId(userId, newsId); if (!list.isEmpty()) { newsLikeRepo.deleteAll(list); newsRepo.addLike(newsId, -list.size()); } } public void likeRoom(Long userId, Long roomId) { List list = newsLikeRepo.findByUserIdAndShowroomId(userId, roomId); if (!list.isEmpty()) return; newsLikeRepo.save(NewsLike.builder() .userId(userId) .showroomId(roomId) .build()); showroomRepo.addLike(roomId, 1); } public void unlikeRoom(Long userId, Long roomId) { List list = newsLikeRepo.findByUserIdAndShowroomId(userId, roomId); if (!list.isEmpty()) { newsLikeRepo.deleteAll(list); showroomRepo.addLike(roomId, -list.size()); } } }