From da5459d5f88e5b5b7bf694fe5d4b0f80e381fe9e Mon Sep 17 00:00:00 2001 From: seonghooni Date: Thu, 1 Aug 2024 17:54:21 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20Like=20=EA=B4=80=EB=A0=A8=20=EB=9E=8C?= =?UTF-8?q?=EB=8B=A4=EC=97=90=EC=84=9C=20=EC=8B=A4=ED=96=89=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=A1=9C=EC=A7=81=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 6 ++++-- .../goormy/hackathon/lambda/LikeFunction.java | 18 ++++++++++++------ .../hackathon/service/LikeServiceTest.java | 16 +++++++--------- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/build.gradle b/build.gradle index 7a7a24a..58147ef 100644 --- a/build.gradle +++ b/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation 'redis.clients:jedis:4.0.1' implementation 'com.amazonaws:aws-lambda-java-core:1.2.1' implementation 'com.amazonaws:aws-lambda-java-events:3.11.0' - implementation 'org.springframework.cloud:spring-cloud-function-adapter-aws:3.2.7' + implementation 'org.springframework.cloud:spring-cloud-function-adapter-aws:4.0.0' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.mysql:mysql-connector-j' @@ -67,4 +67,6 @@ task buildZip(type: Zip) { } archiveFileName = 'lambda-function.zip' destinationDirectory = file("$buildDir/distributions") -} \ No newline at end of file +} + +build.dependsOn buildZip \ No newline at end of file diff --git a/src/main/java/com/goormy/hackathon/lambda/LikeFunction.java b/src/main/java/com/goormy/hackathon/lambda/LikeFunction.java index 57b0f82..8e3de1d 100644 --- a/src/main/java/com/goormy/hackathon/lambda/LikeFunction.java +++ b/src/main/java/com/goormy/hackathon/lambda/LikeFunction.java @@ -1,5 +1,6 @@ package com.goormy.hackathon.lambda; +import com.fasterxml.jackson.databind.ObjectMapper; import com.goormy.hackathon.entity.Follow; import com.goormy.hackathon.entity.Hashtag; import com.goormy.hackathon.entity.Like; @@ -9,6 +10,7 @@ import com.goormy.hackathon.repository.LikeRepository; import com.goormy.hackathon.repository.PostRepository; import com.goormy.hackathon.repository.UserRepository; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Consumer; @@ -26,23 +28,27 @@ public class LikeFunction { private final LikeRepository likeRepository; private final UserRepository userRepository; private final PostRepository postRepository; + private final ObjectMapper objectMapper; @Bean public Consumer> processLike() { return messageBody -> { try { - // userId와 postId를 Long으로 변환 - Long userId = ((Long) messageBody.get("userId")); - Long postId = ((Long) messageBody.get("postId")); - String action = (String) messageBody.get("action"); + List> records = (List>) messageBody.get("Records"); + String bodyString = (String) records.get(0).get("body"); + Map body = objectMapper.readValue(bodyString, Map.class); + + long userId = ((Number) body.get("userId")).longValue(); + long postId = ((Number) body.get("postId")).longValue(); + String action = (String) body.get("action"); User user = userRepository.findById(userId).orElseThrow(() -> new RuntimeException("존재하지 않는 사용자입니다. userId: " + userId)); Post post = postRepository.findById(postId).orElseThrow(() -> new RuntimeException("존재하지 않는 포스트 입니다. postId: " + postId)); - if ("follow".equals(action)) { + if ("like".equals(action)) { addLike(postId,userId); System.out.println("좋아요 성공: " + messageBody); - } else if ("unfollow".equals(action)) { + } else if ("unlike".equals(action)) { cancelLike(postId,userId); System.out.println("좋아요 취소 성공: " + messageBody); } else { diff --git a/src/test/java/com/goormy/hackathon/service/LikeServiceTest.java b/src/test/java/com/goormy/hackathon/service/LikeServiceTest.java index 2bb3dca..67b1723 100644 --- a/src/test/java/com/goormy/hackathon/service/LikeServiceTest.java +++ b/src/test/java/com/goormy/hackathon/service/LikeServiceTest.java @@ -3,11 +3,11 @@ import com.goormy.hackathon.entity.Like; import com.goormy.hackathon.entity.Post; import com.goormy.hackathon.entity.User; +import com.goormy.hackathon.lambda.LikeFunction; import com.goormy.hackathon.repository.LikeRedisRepository; import com.goormy.hackathon.repository.LikeRepository; import com.goormy.hackathon.repository.PostRepository; import com.goormy.hackathon.repository.UserRepository; -import jakarta.persistence.PrePersist; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,8 +16,6 @@ import java.util.List; -import static org.junit.jupiter.api.Assertions.*; - @SpringBootTest class LikeServiceTest { @@ -28,7 +26,7 @@ class LikeServiceTest { PostRepository postRepository; @Autowired - LikeService likeService; + LikeFunction likeFunction; @Autowired LikeRepository likeRepository; @@ -101,7 +99,7 @@ class LikeServiceTest { // given // when - likeService.addLike(2L,1L); + likeFunction.addLike(2L,1L); } @@ -110,7 +108,7 @@ class LikeServiceTest { // given // when - likeService.cancelLike(2L,1L); + likeFunction.cancelLike(2L,1L); } @@ -120,8 +118,8 @@ class LikeServiceTest { // given // when - boolean exist = likeService.findLike(4L, 3L); - boolean noExist = likeService.findLike(2L, 3L); + boolean exist = likeFunction.findLike(4L, 3L); + boolean noExist = likeFunction.findLike(2L, 3L); // then Assertions.assertEquals(exist, true); @@ -138,7 +136,7 @@ class LikeServiceTest { likeRedisRepository.update(4L, 3L, -1); // when - likeService.dumpToDB(); + likeFunction.dumpToDB(); // then }