@DeleteMapping("/register/product/{id}")
public ResponseEntity<Void> deleteProduct(@PathVariable Long id, HttpServletRequest request) {
User user = (User) request.getAttribute("user");
boolean check = productService.deleteProduct(id, user);
return (check) ?
ResponseEntity.status(HttpStatus.OK).body(null) :
ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
ProductService์ deleteProduct ํจ์๋ฅผ ํธ์ถํ๊ณ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ 200 ๋๋ 400์ status code๋ฅผ ๋ฐํ
@Override
@Transactional
public boolean deleteProduct(Long id, User user) {
Product product = productRepository.findById(id).orElse(null);
if(product == null) {
return false;
}
if (product.getUser().getUsername().equals(user.getUsername())) {
productRepository.deleteProductID(product.getId());
return true;
} else {
return false;
}
}
ํ์ฌ DB์ ํด๋น ์์ด๋ ์กฐํ
์กฐํ ๊ฒฐ๊ณผ๊ฐ null์ด๋ฉด, false ๋ฐํ
์กฐํ ๊ฒฐ๊ณผ๊ฐ null์ด ์๋๋ผ๋ฉด, JWT๋ฅผ ๋ณด๋ธ ์ ์ ์ ํด๋น์ํ์ ๋ฑ๋กํ ์ ์ ๊ฐ ๋ง๋์ง ๊ฒ์ฌ
ProductRepository ์ deleteProductID ํจ์๋ฅผ ํธ์ถ
@Override
public void deleteProductID(Long id){
BooleanExpression status = null;
status = eqProductID(id);
if (status == null) {
return;
}
queryFactory.update(product)
.set(product.description, "deleted product")
.set(product.stock, -100)
.set(product.user.id, 1L)
.where(status)
.execute();
}
์ผํ๋ชฐ์์ ์ํ์ด ์ญ์ ๋ผ๋ ๊ณ ๊ฐ์ ์ฅ๋ฐ๊ตฌ๋๋ ์ฃผ๋ฌธ ๋ชฉ๋ก ๋ฑ์๋ ๊ธฐ๋ก์ด ๋จ์ผ๋ฏ๋ก ์ํ ์์ฒด๋ฅผ DB์ ์ง์ฐ๊ธฐ๋ณด๋จ ๊ด๋ฆฌ์์ ์ํ์ผ๋ก ์ ํํ๊ณ , stock๊ณผ description Colum์ ํน์ ๊ฐ์ ๋ฃ์ด ์ญ์ ๋ ์ํ์ผ๋ก ๋ถ๋ฅ