From a3155efd29607e764a956c814460b66429d41555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=B1=EC=9E=AC=ED=98=81?= Date: Thu, 16 Jan 2025 18:50:50 +0900 Subject: [PATCH] =?UTF-8?q?[hotfix]=20=EB=93=9C=EB=9D=BC=EC=9D=B4=EB=B8=8C?= =?UTF-8?q?=20API=20=EC=98=A4=EB=A5=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 드라이브 파일 조회 및 드라이브 휴지통 조회 오류 해결 --- .../controller/DriveTrashController.java | 6 ++---- .../drive/service/DriveTrashService.java | 21 ++++++++++--------- .../drive/service/DriveUploadService.java | 4 ++++ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/main/java/classfit/example/classfit/drive/controller/DriveTrashController.java b/src/main/java/classfit/example/classfit/drive/controller/DriveTrashController.java index 870b378f..d0ea0ccb 100644 --- a/src/main/java/classfit/example/classfit/drive/controller/DriveTrashController.java +++ b/src/main/java/classfit/example/classfit/drive/controller/DriveTrashController.java @@ -32,11 +32,9 @@ public class DriveTrashController { public ApiResponse> trashList( @AuthMember Member member, @Parameter(description = "내 드라이브는 PERSONAL, 공용 드라이브는 SHARED 입니다.") - @RequestParam DriveType driveType, - @Parameter(description = "폴더 경로입니다. 비어 있으면 루트 폴더로 지정됩니다.") - @RequestParam(required = false, defaultValue = "") String folderPath + @RequestParam DriveType driveType ) { - List filesFromTrash = driveTrashService.getFilesFromTrash(member, driveType, folderPath); + List filesFromTrash = driveTrashService.getFilesFromTrash(member, driveType); return ApiResponse.success(filesFromTrash, 200, "조회 성공"); } diff --git a/src/main/java/classfit/example/classfit/drive/service/DriveTrashService.java b/src/main/java/classfit/example/classfit/drive/service/DriveTrashService.java index dffbb4b1..ab735f90 100644 --- a/src/main/java/classfit/example/classfit/drive/service/DriveTrashService.java +++ b/src/main/java/classfit/example/classfit/drive/service/DriveTrashService.java @@ -28,9 +28,10 @@ public class DriveTrashService { @Value("${cloud.aws.s3.bucket}") private String bucketName; - public List getFilesFromTrash(Member member, DriveType driveType, String folderPath) { + public List getFilesFromTrash(Member member, DriveType driveType) { + Set excludedPaths = new HashSet<>(); List deletedFiles = new ArrayList<>(); - String prefix = DriveUtil.buildPrefix(driveType, member, folderPath); + String prefix = DriveUtil.buildPrefix(driveType, member, ""); ListObjectVersionsRequest request = ListObjectVersionsRequest.builder() .bucket(bucketName) @@ -44,14 +45,18 @@ public List getFilesFromTrash(Member member, DriveType driveType, ListObjectVersionsResponse finalResponse = response; response.deleteMarkers().forEach(deleteMarker -> { String key = deleteMarker.key(); - String deleteMarkerVersionId = deleteMarker.versionId(); - String relativePath = key.substring(prefix.length()); + for (String excludedPath : excludedPaths) { + if (key.startsWith(excludedPath)) { + return; + } + } - if (relativePath.contains("/") && relativePath.indexOf("/") != relativePath.length() - 1) { - return; + if (key.endsWith("/")) { + excludedPaths.add(key); } + String deleteMarkerVersionId = deleteMarker.versionId(); Optional previousVersionOpt = finalResponse.versions().stream() .filter(version -> version.key().equals(key)) .filter(version -> !version.versionId().equals(deleteMarkerVersionId)) @@ -92,10 +97,6 @@ public List getFilesFromTrash(Member member, DriveType driveType, } while (response.isTruncated()); - if (!folderPath.isEmpty()) { - deletedFiles.removeFirst(); - } - return deletedFiles; } diff --git a/src/main/java/classfit/example/classfit/drive/service/DriveUploadService.java b/src/main/java/classfit/example/classfit/drive/service/DriveUploadService.java index 537fba1b..b95515cf 100644 --- a/src/main/java/classfit/example/classfit/drive/service/DriveUploadService.java +++ b/src/main/java/classfit/example/classfit/drive/service/DriveUploadService.java @@ -68,6 +68,10 @@ private void addTagsToS3Object(String objectKey, Member member, String folderPat String formattedDate = now.format(DateTimeFormatter.ISO_DATE_TIME); String finalFolderPath = folderPath != null && !folderPath.trim().isEmpty() ? folderPath : ""; + if (!finalFolderPath.isEmpty()) { + finalFolderPath = finalFolderPath + "/"; + } + List tags = List.of( new Tag("folderPath", finalFolderPath), new Tag("driveType", driveType.toString().toLowerCase()),