๐Ÿ” Controller

@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๋ฅผ ๋ฐ˜ํ™˜

๐Ÿ” Service

@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 ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ

๐Ÿ” Repository

@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์— ํŠน์ • ๊ฐ’์„ ๋„ฃ์–ด ์‚ญ์ œ๋œ ์ƒํ’ˆ์œผ๋กœ ๋ถ„๋ฅ˜