diff --git a/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java b/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java index e18d0e8..08ee709 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java @@ -79,7 +79,7 @@ public class MinioAttachmentController { return ResponseEntity.ok(page); } - @Operation(summary = "첨부파일 삭제") + @Operation(summary = "첨부파일 삭제 (MinIO 포함)") @DeleteMapping("/{id}") public ResponseEntity delete( @Parameter(description = "첨부파일 ID", required = true) diff --git a/src/main/java/kr/re/etri/autoflow/service/MinioAttachmentService.java b/src/main/java/kr/re/etri/autoflow/service/MinioAttachmentService.java index cb6ce1c..0110fac 100644 --- a/src/main/java/kr/re/etri/autoflow/service/MinioAttachmentService.java +++ b/src/main/java/kr/re/etri/autoflow/service/MinioAttachmentService.java @@ -2,6 +2,7 @@ package kr.re.etri.autoflow.service; import io.minio.MinioClient; import io.minio.PutObjectArgs; +import io.minio.RemoveObjectArgs; import jakarta.transaction.Transactional; import kr.re.etri.autoflow.entity.MinioAttachmentEntity; import kr.re.etri.autoflow.payload.request.BaseSearchRequest; @@ -229,12 +230,31 @@ public class MinioAttachmentService { /** * 삭제 */ + @Transactional public boolean delete(Long id) { - if (!minioAttachmentRepository.existsById(id)) { + Optional attachmentOpt = minioAttachmentRepository.findById(id); + if (attachmentOpt.isEmpty()) { + return false; + } + + MinioAttachmentEntity attachment = attachmentOpt.get(); + try { + // MinIO 파일 삭제 + minioClient.removeObject( + RemoveObjectArgs.builder() + .bucket(bucketName) + .object(attachment.getStoragePath()) + .build() + ); + + // DB에서 삭제 + minioAttachmentRepository.deleteById(id); + return true; + + } catch (Exception e) { + log.error("MinIO 파일 삭제 실패: " + attachment.getStoragePath(), e); return false; } - minioAttachmentRepository.deleteById(id); - return true; } /**