diff --git a/simple_sns/src/main/java/com/example/sns/controller/PostController.java b/simple_sns/src/main/java/com/example/sns/controller/PostController.java index 088914df..0a435903 100644 --- a/simple_sns/src/main/java/com/example/sns/controller/PostController.java +++ b/simple_sns/src/main/java/com/example/sns/controller/PostController.java @@ -61,4 +61,9 @@ public class PostController { return Response.success(); } + @GetMapping("/{postId}/likes") + public Response likeCount(@PathVariable Integer postId, Authentication authentication) { + return Response.success(postService.likeCount(postId)); + } + } diff --git a/simple_sns/src/main/java/com/example/sns/repository/LikeEntityRepository.java b/simple_sns/src/main/java/com/example/sns/repository/LikeEntityRepository.java index 17753d47..bf8074b0 100644 --- a/simple_sns/src/main/java/com/example/sns/repository/LikeEntityRepository.java +++ b/simple_sns/src/main/java/com/example/sns/repository/LikeEntityRepository.java @@ -4,12 +4,20 @@ import com.example.sns.model.entity.LikeEntity; import com.example.sns.model.entity.PostEntity; import com.example.sns.model.entity.UserEntity; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @Repository public interface LikeEntityRepository extends JpaRepository { Optional findByUserAndPost(UserEntity user, PostEntity post); + + @Query(value = "SELECT COUNT(*) FROM LikeEntity entity WHERE entity.post =:post") + Integer countByPost(@Param("post") PostEntity post); + + List findAllByPost(PostEntity post); } diff --git a/simple_sns/src/main/java/com/example/sns/service/PostService.java b/simple_sns/src/main/java/com/example/sns/service/PostService.java index 4edbbbcc..f925c8ac 100644 --- a/simple_sns/src/main/java/com/example/sns/service/PostService.java +++ b/simple_sns/src/main/java/com/example/sns/service/PostService.java @@ -141,4 +141,17 @@ public class PostService { // save like likeEntityRepository.save(LikeEntity.of(userEntity, postEntity)); } + + public int likeCount(Integer postId) { + PostEntity postEntity = postEntityRepository.findById(postId) + .orElseThrow( + () -> new SnsApplicationException( + POST_NOT_FOUND, + String.format("%s not founded", postId) + ) + ); + + // count like + return likeEntityRepository.countByPost(postEntity); + } }