Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ public class IngredientBookmark {
private long ingredientBookmarkPk;

@ManyToOne
@JoinColumn(name = "user")
@JoinColumn(name = "user_pk")
private User user;

@ManyToOne
@JoinColumn(name = "ingredient_management")
@JoinColumn(name = "ingredient_management_pk")
private IngredientManagement ingredientManagement;
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
package moja.refrigerator.controller.ingredient;

import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest;
import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark;
import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark;
import moja.refrigerator.service.ingredient.IngredientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import moja.refrigerator.dto.ingredient.response.IngredientResponse;
import moja.refrigerator.service.ingredient.IngredientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController
@RequestMapping("/ingredient")
public class IngredientController {
Expand All @@ -24,9 +35,20 @@ public void createIngredient(@RequestBody IngredientCreateRequest request) {
ingredientService.createIngredient(request);
}


@PostMapping("/bookmark/regist")
public ResponseEntity<ResponseRegistIngredientBookmark> createIngredientBookmark(
@RequestBody RequestRegistIngredientBookmark requestBookmark
) {
ResponseRegistIngredientBookmark responseBookmark =
ingredientService.createIngredientBookmark(requestBookmark);

return ResponseEntity.status(HttpStatus.CREATED).body(responseBookmark);

// 재료 조회
@GetMapping
public List<IngredientResponse> getIngredient() {
return ingredientService.getIngredient();

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package moja.refrigerator.dto.ingredient.request;

import lombok.Data;

@Data
public class RequestRegistIngredientBookmark {
private long userPk;
private long ingredientPk;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package moja.refrigerator.dto.ingredient.response;

import lombok.Data;
import moja.refrigerator.aggregate.ingredient.IngredientBookmark;
import moja.refrigerator.aggregate.ingredient.IngredientManagement;
import moja.refrigerator.aggregate.user.User;

@Data
public class ResponseRegistIngredientBookmark {
private long ingredientBookmarkPk;
private User user;
private IngredientManagement ingredientManagement;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package moja.refrigerator.repository.ingredient;

import moja.refrigerator.aggregate.ingredient.IngredientBookmark;
import org.springframework.data.jpa.repository.JpaRepository;

public interface IngredientBookmarkRepository extends JpaRepository<IngredientBookmark, Long> {
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
package moja.refrigerator.service.ingredient;

import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest;
import moja.refrigerator.dto.ingredient.response.IngredientResponse;

import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark;
import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark;
import java.util.List;
import moja.refrigerator.dto.ingredient.response.IngredientResponse;

public interface IngredientService {
void createIngredient(IngredientCreateRequest request);

ResponseRegistIngredientBookmark createIngredientBookmark(RequestRegistIngredientBookmark requestBookmark);

void createIngredient(IngredientCreateRequest request); // 재료 등록 메서드

List<IngredientResponse> getIngredient(); // 재료 조회 메서드

}
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
package moja.refrigerator.service.ingredient;

//import moja.refrigerator.aggregate.ingredient.IngredientCategory;
import jakarta.persistence.EntityNotFoundException;
import moja.refrigerator.aggregate.ingredient.IngredientBookmark;
import moja.refrigerator.aggregate.ingredient.IngredientManagement;
//import moja.refrigerator.aggregate.ingredient.IngredientStorage;
import moja.refrigerator.aggregate.user.User;
import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest;
//import moja.refrigerator.repository.ingredient.IngredientCategoryRepository;
import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark;
import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark;
import moja.refrigerator.repository.ingredient.IngredientBookmarkRepository;
import moja.refrigerator.dto.ingredient.response.IngredientResponse;
import moja.refrigerator.repository.ingredient.IngredientManagementRepository;
//import moja.refrigerator.repository.ingredient.IngredientStorageRepository;
import moja.refrigerator.repository.user.UserRepository;
import org.modelmapper.ModelMapper;
import org.modelmapper.convention.MatchingStrategies;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -22,16 +30,22 @@ public class IngredientServiceImpl implements IngredientService{
private IngredientManagementRepository ingredientManagementRepository;
// private IngredientStorageRepository ingredientStorageRepository;
// private IngredientCategoryRepository ingredientCategoryRepository;
private IngredientBookmarkRepository ingredientBookmarkRepository;
private UserRepository userRepository;
private ModelMapper mapper;

@Autowired
public IngredientServiceImpl(IngredientManagementRepository ingredientManagementRepository,
// IngredientStorageRepository ingredientStorageRepository,
// IngredientCategoryRepository ingredientCategoryRepository,
IngredientBookmarkRepository ingredientBookmarkRepository,
UserRepository userRepository,
ModelMapper mapper) {
this.ingredientManagementRepository = ingredientManagementRepository;
// this.ingredientStorageRepository = ingredientStorageRepository;
// this.ingredientCategoryRepository = ingredientCategoryRepository;
this.ingredientBookmarkRepository = ingredientBookmarkRepository;
this.userRepository = userRepository;
this.mapper = mapper;
}

Expand All @@ -54,6 +68,27 @@ public void createIngredient(IngredientCreateRequest request) {
}

@Override

public ResponseRegistIngredientBookmark createIngredientBookmark(RequestRegistIngredientBookmark requestBookmark) {
User user = userRepository.findById(requestBookmark.getUserPk())
.orElseThrow(() -> new EntityNotFoundException("회원을 찾을 수 없습니다."));

IngredientManagement ingredientManagement = ingredientManagementRepository
.findById(requestBookmark.getIngredientPk())
.orElseThrow(() -> new EntityNotFoundException("재료를 찾을 수 없습니다."));

IngredientBookmark ingredientBookmark = new IngredientBookmark();

ingredientBookmark.setUser(user);
ingredientBookmark.setIngredientManagement(ingredientManagement);

ingredientBookmarkRepository.save(ingredientBookmark);

mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);

return mapper.map(ingredientBookmark, ResponseRegistIngredientBookmark.class);
}

@Transactional(readOnly = true)
public List<IngredientResponse> getIngredient() {
List<IngredientManagement> ingredients = ingredientManagementRepository.findAll();
Expand Down