From 01f92b25bc35d5aeea117fd0d62dab811823aa1f Mon Sep 17 00:00:00 2001 From: bjkim Date: Mon, 29 Sep 2025 18:08:50 +0900 Subject: [PATCH] =?UTF-8?q?[ADD]=20MinIO=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80=20=EB=B0=8F?= =?UTF-8?q?=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EC=84=A4=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MinioAttachmentController.java | 2 +- .../service/MinioAttachmentService.java | 26 ++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) 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; } /**