diff --git a/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java b/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java index 4d9c867..3953ab9 100644 --- a/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java @@ -12,6 +12,7 @@ import ru.soune.nocopy.entity.file.ProtectionStatus; import ru.soune.nocopy.exception.FileEntityNotFoundException; import ru.soune.nocopy.exception.NotFoundAuthToken; import ru.soune.nocopy.repository.FileEntityRepository; +import ru.soune.nocopy.service.file.cloud.CloudStorageService; import ru.soune.nocopy.service.register.AuthService; import ru.soune.nocopy.service.file.FileEntityService; import ru.soune.nocopy.service.file.FileStatsService; @@ -35,6 +36,8 @@ public class FileEntityHandler implements RequestHandler { private final FileEntityRepository fileEntityRepository; + private final CloudStorageService cloudStorageService; + @Override public BaseResponse handle(BaseRequest request) { try { @@ -302,7 +305,7 @@ public class FileEntityHandler implements RequestHandler { int fullDelete = fileRequest.getFullDelete() == null ? 0 : fileRequest.getFullDelete(); if (fileEntity.getStatus().equals(FileStatus.DELETED) || fullDelete == 1) { - fileEntityService.deleteFromStorageDisk(fileEntity); + cloudStorageService.deleteFromStorageDisk(fileEntity); response = DeleteFileResponse.builder() .fileId(fileRequest.getFileId()) .message("File deleted from disk") diff --git a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java index 7a6a4cb..bf076a5 100644 --- a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java @@ -186,13 +186,6 @@ public class FileEntityService { fileEntityRepository.save(fileEntity); } - public void deleteFromStorageDisk(FileEntity fileEntity) { - cloudStorageService.deleteFileFromStorage(fileEntity.getFilePath()); - cloudStorageService.deleteFileFromStorage(fileEntity.getProtectedFilePath()); - - fileEntityRepository.delete(fileEntity); - } - public void deleteFromDisk(String deleteFilePath) throws IOException { Files.deleteIfExists(Paths.get(deleteFilePath)); } @@ -238,7 +231,7 @@ public class FileEntityService { List fileByUserIdAndStatus = fileEntityRepository.findFileByUserIdAndStatus(userId, FileStatus.TEMP); for (FileEntity fileEntity : fileByUserIdAndStatus) { - deleteFromStorageDisk(fileEntity); + cloudStorageService.deleteFromStorageDisk(fileEntity); } } diff --git a/src/main/java/ru/soune/nocopy/service/file/cloud/CloudStorageService.java b/src/main/java/ru/soune/nocopy/service/file/cloud/CloudStorageService.java index bbe90d0..ab12a0d 100644 --- a/src/main/java/ru/soune/nocopy/service/file/cloud/CloudStorageService.java +++ b/src/main/java/ru/soune/nocopy/service/file/cloud/CloudStorageService.java @@ -4,7 +4,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import ru.soune.nocopy.service.file.FileEntityService; +import ru.soune.nocopy.entity.file.FileEntity; +import ru.soune.nocopy.repository.FileEntityRepository; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.AwsCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; @@ -26,7 +27,7 @@ import java.nio.file.Paths; @RequiredArgsConstructor public class CloudStorageService { - private final FileEntityService fileEntityService; + private final FileEntityRepository fileEntityRepository; @Value("${yandex.cloud.key}") private String key; @@ -66,7 +67,7 @@ public class CloudStorageService { try { s3Client.putObject(putObjectRequest, RequestBody.fromBytes(Files.readAllBytes(Paths.get(sendToCloudFilePath)))); - fileEntityService.deleteFromDisk(sendToCloudFilePath); + Files.deleteIfExists(Paths.get(sendToCloudFilePath)); } catch (IOException e) { log.error("Failed to read file: {}", filePath, e); } @@ -129,4 +130,14 @@ public class CloudStorageService { throw new RuntimeException("Failed to delete file from cloud storage: " + cloudKey, e); } } + + public void deleteFromStorageDisk(FileEntity fileEntity) { + deleteFileFromStorage(fileEntity.getFilePath()); + + if (fileEntity.getProtectedFilePath() != null) { + deleteFileFromStorage(fileEntity.getProtectedFilePath()); + } + + fileEntityRepository.delete(fileEntity); + } }