From d0b977291cf252471b29f0794fa55d470c6f9b8c Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Thu, 23 Apr 2026 14:28:06 +0700 Subject: [PATCH] dev add cold storage --- .../nocopy/controller/ApiController.java | 56 +++++++++++-------- .../file/cloud/CloudStorageService.java | 2 - 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/controller/ApiController.java b/src/main/java/ru/soune/nocopy/controller/ApiController.java index 172cb38..ead8e40 100644 --- a/src/main/java/ru/soune/nocopy/controller/ApiController.java +++ b/src/main/java/ru/soune/nocopy/controller/ApiController.java @@ -276,43 +276,53 @@ public class ApiController { private List processNonImageFile(FileEntity fileEntity, boolean cloud) throws Exception { List results = new ArrayList<>(); - + File file = null; FileEntity duplicateByHash = fileSimilarityService.findDuplicateByHash(fileEntity.getFilePath(), fileEntity.getMimeType(), fileEntity.getUserId(), cloud); + log.info("duplicateByHash: {}", duplicateByHash); + if (duplicateByHash != null) { results.add(fileSimilarityService.buildDTO(duplicateByHash)); return results; } - File file = cloudStorageService.readFileFromStorageByPath(fileEntity.getFilePath()); - FileProtector.Type type = "document".equals(fileEntity.getMimeType()) ? - FileProtector.Type.DOC : FileProtector.Type.AUDIO; + try { + file = cloudStorageService.readFileFromStorageByPath(fileEntity.getFilePath()); + FileProtector.Type type = "document".equals(fileEntity.getMimeType()) ? + FileProtector.Type.DOC : FileProtector.Type.AUDIO; - NoCopyCheckResult checkResult = noCopyFileService.checkFile(file, type); - log.info("checkResult: {}", checkResult); + NoCopyCheckResult checkResult = noCopyFileService.checkFile(file, type); + log.info("checkResult: {}", checkResult); - switch (checkResult) { - case DocumentCheckResult.Success success -> { - FileProtector.FileInfo info = success.getInfo(); - FileEntity entity = fileEntityRepository.findByFileId(info.getId()); - if (entity != null) { - results.add(fileSimilarityService.buildDTO(entity)); + switch (checkResult) { + case DocumentCheckResult.Success success -> { + FileProtector.FileInfo info = success.getInfo(); + FileEntity entity = fileEntityRepository.findByFileId(info.getId()); + if (entity != null) { + results.add(fileSimilarityService.buildDTO(entity)); + } } - } - case AudioCheckResult.Success success -> { - FileProtector.FileInfo info = success.getInfo(); - FileEntity entity = fileEntityRepository.findByFileId(info.getId()); - if (entity != null) { - results.add(fileSimilarityService.buildDTO(entity)); + case AudioCheckResult.Success success -> { + FileProtector.FileInfo info = success.getInfo(); + FileEntity entity = fileEntityRepository.findByFileId(info.getId()); + if (entity != null) { + results.add(fileSimilarityService.buildDTO(entity)); + } } + case DocumentCheckResult.Failed failed -> + log.warn("Document check failed: {}", failed.getMessage()); + case AudioCheckResult.Failed failed -> + log.warn("Audio check failed: {}", failed.getMessage()); + default -> log.warn("Unexpected result type: {}", checkResult.getClass().getSimpleName()); + } + } catch (Exception e) { + throw new Exception("Files for search not valid"); + } finally { + if (file != null && file.exists()) { + file.delete(); } - case DocumentCheckResult.Failed failed -> - log.warn("Document check failed: {}", failed.getMessage()); - case AudioCheckResult.Failed failed -> - log.warn("Audio check failed: {}", failed.getMessage()); - default -> log.warn("Unexpected result type: {}", checkResult.getClass().getSimpleName()); } return results; 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 3a65ded..0cd8994 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 @@ -176,8 +176,6 @@ public class CloudStorageService { s3Client.getObject(objectRequest, tempFile.toPath()); - tempFile.deleteOnExit(); - return tempFile; }