diff --git a/refrigerator/.idea/modules/refrigerator.main.iml b/refrigerator/.idea/modules/refrigerator.main.iml index afc1871..9f498db 100644 --- a/refrigerator/.idea/modules/refrigerator.main.iml +++ b/refrigerator/.idea/modules/refrigerator.main.iml @@ -4,5 +4,8 @@ + + + \ No newline at end of file diff --git a/refrigerator/build.gradle b/refrigerator/build.gradle index 0e3a358..383be4b 100644 --- a/refrigerator/build.gradle +++ b/refrigerator/build.gradle @@ -42,7 +42,6 @@ dependencies { implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3' testImplementation 'org.springframework.boot:spring-boot-starter-test' } - tasks.named('test') { useJUnitPlatform() } diff --git a/refrigerator/src/main/java/moja/refrigerator/aggregate/recipe/Recipe.java b/refrigerator/src/main/java/moja/refrigerator/aggregate/recipe/Recipe.java index fdac2ea..f76ffbd 100644 --- a/refrigerator/src/main/java/moja/refrigerator/aggregate/recipe/Recipe.java +++ b/refrigerator/src/main/java/moja/refrigerator/aggregate/recipe/Recipe.java @@ -8,6 +8,7 @@ import org.hibernate.annotations.UpdateTimestamp; import java.time.LocalDateTime; +import java.util.List; @Data @Entity @@ -53,4 +54,7 @@ public class Recipe { @JoinColumn(name = "recipe_category") @ManyToOne private RecipeCategory recipeCategory; + + @OneToMany(mappedBy = "recipe") + private List recipeIngredients; } \ No newline at end of file diff --git a/refrigerator/src/main/java/moja/refrigerator/controller/recipe/RecipeController.java b/refrigerator/src/main/java/moja/refrigerator/controller/recipe/RecipeController.java index 3bb64af..2ebfdff 100644 --- a/refrigerator/src/main/java/moja/refrigerator/controller/recipe/RecipeController.java +++ b/refrigerator/src/main/java/moja/refrigerator/controller/recipe/RecipeController.java @@ -3,6 +3,7 @@ import moja.refrigerator.aggregate.recipe.Recipe; import moja.refrigerator.dto.recipe.request.RecipeCreateRequest; import moja.refrigerator.dto.recipe.request.RecipeUpdateRequest; +import moja.refrigerator.dto.recipe.response.RecipeDetailResponse; import moja.refrigerator.dto.recipe.response.RecipeResponse; import moja.refrigerator.service.recipe.RecipeService; import org.springframework.beans.factory.annotation.Autowired; @@ -30,6 +31,9 @@ public List getAllRecipes(){ return recipeService.getAllRecipes(); } + @GetMapping("/{id}") + public RecipeDetailResponse getRecipe(@PathVariable long id){ return recipeService.getRecipe(id);} + @DeleteMapping public void deleteRecipe(@RequestParam long recipePk){ recipeService.deleteRecipe(recipePk); diff --git a/refrigerator/src/main/java/moja/refrigerator/dto/recipe/response/RecipeDetailResponse.java b/refrigerator/src/main/java/moja/refrigerator/dto/recipe/response/RecipeDetailResponse.java new file mode 100644 index 0000000..0fcf203 --- /dev/null +++ b/refrigerator/src/main/java/moja/refrigerator/dto/recipe/response/RecipeDetailResponse.java @@ -0,0 +1,25 @@ +package moja.refrigerator.dto.recipe.response; + +import java.time.LocalDateTime; +import java.util.List; + +import lombok.Data; +import moja.refrigerator.dto.ingredient.response.IngredientResponse; + +@Data +public class RecipeDetailResponse { + private long recipePk; + private String recipeName; + private int recipeCookingTime; + private int recipeDifficulty; + private long recipeViews; + + private LocalDateTime recipeCreateTime;; + private LocalDateTime recipeUpdateTime; + + private String recipeSource; + private String userPk; + private String recipeCategory; + + private List ingredients; +} diff --git a/refrigerator/src/main/java/moja/refrigerator/service/recipe/RecipeService.java b/refrigerator/src/main/java/moja/refrigerator/service/recipe/RecipeService.java index 4d6c154..3b04e43 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/recipe/RecipeService.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/recipe/RecipeService.java @@ -3,6 +3,7 @@ import moja.refrigerator.aggregate.recipe.Recipe; import moja.refrigerator.dto.recipe.request.RecipeCreateRequest; import moja.refrigerator.dto.recipe.request.RecipeUpdateRequest; +import moja.refrigerator.dto.recipe.response.RecipeDetailResponse; import moja.refrigerator.dto.recipe.response.RecipeResponse; import moja.refrigerator.repository.recipe.RecipeRepository; import org.springframework.stereotype.Service; @@ -12,6 +13,7 @@ public interface RecipeService { void createRecipe(RecipeCreateRequest request); List getAllRecipes(); + RecipeDetailResponse getRecipe(long id); void deleteRecipe(long recipePk); void updateRecipe(RecipeUpdateRequest request); } diff --git a/refrigerator/src/main/java/moja/refrigerator/service/recipe/RecipeServiceImpl.java b/refrigerator/src/main/java/moja/refrigerator/service/recipe/RecipeServiceImpl.java index b857df7..5c5ceb0 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/recipe/RecipeServiceImpl.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/recipe/RecipeServiceImpl.java @@ -4,8 +4,10 @@ import moja.refrigerator.aggregate.recipe.Recipe; import moja.refrigerator.aggregate.recipe.RecipeCategory; import moja.refrigerator.aggregate.recipe.RecipeSource; +import moja.refrigerator.dto.ingredient.response.IngredientResponse; import moja.refrigerator.dto.recipe.request.RecipeCreateRequest; import moja.refrigerator.dto.recipe.request.RecipeUpdateRequest; +import moja.refrigerator.dto.recipe.response.RecipeDetailResponse; import moja.refrigerator.dto.recipe.response.RecipeResponse; import moja.refrigerator.repository.recipe.RecipeCategoryRepositoy; import moja.refrigerator.repository.recipe.RecipeRepository; @@ -73,9 +75,15 @@ public List getAllRecipes(){ return recipeRepository.findAll().stream() .map(recipe -> mapper.map(recipe, RecipeResponse.class)) .collect(Collectors.toList()); - }; + } - @Override + public RecipeDetailResponse getRecipe(long id){ + Recipe recipe = recipeRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("recipe not found")); + RecipeDetailResponse response = mapper.map(recipe,RecipeDetailResponse.class); + return response; + } + + @Override public void deleteRecipe(long recipePk) { Recipe recipe = recipeRepository.findByRecipePk(recipePk) .orElseThrow(IllegalArgumentException::new);