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()),