diff --git a/src/main/java/net/skhu/tastyinventory_be/controller/inventory/InventoryController.java b/src/main/java/net/skhu/tastyinventory_be/controller/inventory/InventoryController.java index 0b66566..44b2b2d 100644 --- a/src/main/java/net/skhu/tastyinventory_be/controller/inventory/InventoryController.java +++ b/src/main/java/net/skhu/tastyinventory_be/controller/inventory/InventoryController.java @@ -1,6 +1,5 @@ package net.skhu.tastyinventory_be.controller.inventory; -import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.skhu.tastyinventory_be.common.dto.BaseResponse; @@ -50,6 +49,20 @@ public BaseResponse> findAllByNameContaining( return BaseResponse.success(SuccessCode.INVENTORY_GET_SUCCESS, data); } + @PatchMapping( + consumes = MediaType.MULTIPART_FORM_DATA_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE, + path = "/{id}") + @ResponseStatus(HttpStatus.CREATED) + public BaseResponse updateInventory( + @RequestParam("inventoryName") String name, + @RequestParam("inventoryUnit") Unit unit, + @RequestPart("inventoryImage") MultipartFile image, + @PathVariable Long id) { + inventoryService.updateInventory(id, name, unit, image); + return BaseResponse.success(SuccessCode.INVENTORY_PATCH_SUCCESS); + } + @DeleteMapping("/{id}") @ResponseStatus(HttpStatus.NO_CONTENT) public BaseResponse deleteInventory(@PathVariable Long id) { diff --git a/src/main/java/net/skhu/tastyinventory_be/domain/inventory/Inventory.java b/src/main/java/net/skhu/tastyinventory_be/domain/inventory/Inventory.java index 8d261c3..8d6e87b 100644 --- a/src/main/java/net/skhu/tastyinventory_be/domain/inventory/Inventory.java +++ b/src/main/java/net/skhu/tastyinventory_be/domain/inventory/Inventory.java @@ -36,4 +36,10 @@ public Inventory(String name, Unit unit, String imageUrl) { this.unit = unit; this.imageUrl = imageUrl; } + + public void update(String name, Unit unit, String imageUrl) { + this.name = name; + this.unit = unit; + this.imageUrl = imageUrl; + } } diff --git a/src/main/java/net/skhu/tastyinventory_be/service/InventoryService.java b/src/main/java/net/skhu/tastyinventory_be/service/InventoryService.java index 06e99fb..4bda5f2 100644 --- a/src/main/java/net/skhu/tastyinventory_be/service/InventoryService.java +++ b/src/main/java/net/skhu/tastyinventory_be/service/InventoryService.java @@ -49,6 +49,21 @@ public List findAllByNameContaining(String srchText) { return inventoryList.stream().map(InventoryResponseDto::from).collect(Collectors.toList()); } + @Transactional + public void updateInventory(Long id, String name, Unit unit, MultipartFile image) { + Inventory inventory = inventoryRepository.findById(id).orElseThrow( + () -> new NotFoundException( + ErrorCode.NOT_FOUND_INVENTORY_EXCEPTION, + ErrorCode.NOT_FOUND_USER_EXCEPTION.getMessage() + ) + ); + + s3Service.deleteFile(inventory.getImageUrl()); + String imageUrl = s3Service.uploadImage(image, "inventory"); + + inventory.update(name, unit, imageUrl); + } + @Transactional public void deleteInventory(Long id) { Inventory inventory = inventoryRepository.findById(id)