Skip to content

Commit 4ee5e70

Browse files
authored
Merge pull request runtiime#77 from username056/feat-memberRecipe
[feat] 멤버별 레시피 및 좋아요 레시피 조회 기능 추가
2 parents 9d10e4d + 212eef2 commit 4ee5e70

3 files changed

Lines changed: 27 additions & 5 deletions

File tree

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package sejong.capston.yechef.domain.MemberRecipe.controller;
22

3+
import io.swagger.v3.oas.annotations.Parameter;
34
import java.util.List;
45
import lombok.RequiredArgsConstructor;
56
import org.springframework.http.ResponseEntity;
@@ -8,8 +9,10 @@
89
import org.springframework.web.bind.annotation.PathVariable;
910
import org.springframework.web.bind.annotation.RequestMapping;
1011
import org.springframework.web.bind.annotation.RestController;
12+
import sejong.capston.yechef.domain.MemberRecipe.MemberRecipe;
1113
import sejong.capston.yechef.domain.Recipe.dto.RecipeDto;
1214
import sejong.capston.yechef.domain.Recipe.service.RecipeService;
15+
import sejong.capston.yechef.global.exception.BaseException;
1316

1417
@RestController
1518
@RequiredArgsConstructor
@@ -20,23 +23,35 @@ public class MemberRecipeController {
2023

2124
@PatchMapping("/{memberId}/recipes/{recipeId}/like")
2225
public ResponseEntity<Void> toggleLike(
23-
@PathVariable Long memberId,
24-
@PathVariable Long recipeId
26+
@PathVariable("memberId") Long memberId,
27+
@PathVariable("recipeId") Long recipeId
2528
) {
2629
recipeService.toggleLike(memberId, recipeId);
2730
return ResponseEntity.ok().build();
2831
}
2932

3033
@GetMapping("/{memberId}/my-recipes")
31-
public List<RecipeDto> getMyRecipes(@PathVariable Long memberId) {
34+
public List<RecipeDto> getMyRecipes(
35+
@Parameter(description = "회원 ID", required = true)
36+
@PathVariable("memberId") Long memberId
37+
) {
3238
return recipeService.getMyRecipes(memberId);
3339
}
3440

3541
// 향후 확장을 위한 좋아요 목록 예시
3642
@GetMapping("/{memberId}/likes")
37-
public List<RecipeDto> getLikedRecipes(@PathVariable Long memberId) {
43+
public List<RecipeDto> getLikedRecipes(
44+
@PathVariable("memberId") Long memberId) {
3845
return recipeService.getLikedRecipes(memberId); // 메서드 직접 구현 필요
3946
}
47+
48+
@GetMapping("/member-recipes/{memberRecipeId}/recipe")
49+
public ResponseEntity<RecipeDto> getRecipeFromMemberRecipe(
50+
@PathVariable("memberRecipeId") Long memberRecipeId
51+
) {
52+
return ResponseEntity.ok(recipeService.getRecipeFromMemberRecipe(memberRecipeId));
53+
}
54+
4055
}
4156

4257

yechef/src/main/java/sejong/capston/yechef/domain/MemberRecipe/repository/MemberRecipeRepository.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@
33
import java.util.List;
44
import java.util.Optional;
55
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.data.jpa.repository.Query;
7+
import org.springframework.data.repository.query.Param;
68
import sejong.capston.yechef.domain.MemberRecipe.MemberRecipe;
79
import sejong.capston.yechef.domain.Recipe.Recipe;
810

911
public interface MemberRecipeRepository extends JpaRepository<MemberRecipe, Long> {
1012

1113
Optional<MemberRecipe> findByMemberIdAndRecipeId(Long memberId, Long recipeId);
1214

13-
List<Recipe> findLikedRecipesByMemberId(Long memberId);
15+
@Query("SELECT mr.recipe FROM MemberRecipe mr WHERE mr.member.id = :memberId AND mr.isLiked = true")
16+
List<Recipe> findLikedRecipesByMemberId(@Param("memberId") Long memberId);
17+
1418
}
1519

yechef/src/main/java/sejong/capston/yechef/global/exception/error/ErrorCode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ public enum ErrorCode {
3232
NOT_EXIST_THIS_STEP("RCP-0003", "레시피 해당 단계가 존재하지 않습니다.", ErrorDisplayType.POPUP),
3333
RECIPE_SAVE_FAILED("RCP-0004", "레시피 저장 실패", ErrorDisplayType.POPUP),
3434

35+
// memberRecipe
36+
MEMBER_RECIPE_NOT_FOUND("MRP-0000", "멤버레시피가 존재하지 않습니다.", ErrorDisplayType.POPUP),
37+
3538
//gpt
3639
GPT_RESPONSE_PARSING_FAILED("GPT-0000", "GPT 응답 파싱에 실패했습니다.", ErrorDisplayType.POPUP),
3740

0 commit comments

Comments
 (0)