diff --git a/archive-application/src/main/java/site/archive/service/like/LikeService.java b/archive-application/src/main/java/site/archive/service/like/LikeService.java deleted file mode 100644 index cdb2df81..00000000 --- a/archive-application/src/main/java/site/archive/service/like/LikeService.java +++ /dev/null @@ -1,57 +0,0 @@ -package site.archive.service.like; - -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import site.archive.common.exception.common.ResourceNotFoundException; -import site.archive.domain.common.BaseTimeEntity; -import site.archive.domain.like.Like; -import site.archive.domain.like.LikeRepository; - -import java.util.List; - -@Service -@Transactional(readOnly = true) -@RequiredArgsConstructor -public class LikeService { - - private final LikeRepository likeRepository; - - @Transactional - public void save(Long userId, Long archiveId) { - likeRepository.findByUserIdAndArchiveId(userId, archiveId) - .ifPresentOrElse(BaseTimeEntity::softDeleteCancel, - () -> likeRepository.save(Like.of(userId, archiveId))); - } - - @Transactional - public void save(Long userId, List archiveIds) { - archiveIds.forEach(archiveId -> likeRepository.findByUserIdAndArchiveId(userId, archiveId) - .ifPresentOrElse(BaseTimeEntity::softDeleteCancel, - () -> likeRepository.save(Like.of(userId, archiveId)))); - } - - @Transactional - public void delete(Long userId, Long archiveId) { - likeRepository.findByUserIdAndArchiveId(userId, archiveId) - .ifPresentOrElse(likeRepository::delete, - () -> {throw new ResourceNotFoundException("조건에 맞는 Like 데이터가 없습니다");}); - } - - @Transactional - public void delete(Long userId, List archiveIds) { - archiveIds.forEach(archiveId -> likeRepository.findByUserIdAndArchiveId(userId, archiveId) - .ifPresentOrElse(likeRepository::delete, - () -> { - throw new ResourceNotFoundException("조건에 맞는 Like 데이터가 없습니다"); - })); - } - - public List likeArchiveIds(Long userId) { - return likeRepository.findAllByUserId(userId).stream() - .filter(like -> !like.getIsDeleted()) - .map(like -> like.getArchive().getId()) - .toList(); - } - -} diff --git a/archive-application/src/main/kotlin/site/archive/service/like/LikeService.kt b/archive-application/src/main/kotlin/site/archive/service/like/LikeService.kt new file mode 100644 index 00000000..59a35a0b --- /dev/null +++ b/archive-application/src/main/kotlin/site/archive/service/like/LikeService.kt @@ -0,0 +1,49 @@ +package site.archive.service.like + +import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional +import site.archive.common.exception.common.ResourceNotFoundException +import site.archive.domain.common.BaseTimeEntity +import site.archive.domain.like.Like +import site.archive.domain.like.LikeRepository + +@Service +@Transactional(readOnly = true) +class LikeService(private val likeRepository: LikeRepository) { + + @Transactional + fun save(userId: Long, archiveId: Long) { + likeRepository.findByUserIdAndArchiveId(userId, archiveId) + .ifPresentOrElse(BaseTimeEntity::softDeleteCancel) { likeRepository.save(Like.of(userId, archiveId)) } + } + + @Transactional + fun save(userId: Long, archiveIds: List) { + archiveIds.forEach { + likeRepository.findByUserIdAndArchiveId(userId, it) + .ifPresentOrElse(BaseTimeEntity::softDeleteCancel) { likeRepository.save(Like.of(userId, it)) } + } + } + + @Transactional + fun delete(userId: Long, archiveId: Long) { + likeRepository.findByUserIdAndArchiveId(userId, archiveId) + .ifPresentOrElse(likeRepository::delete) { throw ResourceNotFoundException("조건에 맞는 Like 데이터가 없습니다") } + } + + @Transactional + fun delete(userId: Long, archiveIds: List) { + archiveIds.forEach { + likeRepository.findByUserIdAndArchiveId(userId, it) + .ifPresentOrElse(likeRepository::delete) { throw ResourceNotFoundException("조건에 맞는 Like 데이터가 없습니다") } + } + } + + fun likeArchiveIds(userId: Long): List { + return likeRepository.findAllByUserId(userId) + .filter { !it.isDeleted } + .map { it.archive.id } + .toList() + } + +} \ No newline at end of file