diff --git a/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java b/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java index 7ceb303..3bee72a 100644 --- a/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java @@ -49,5 +49,5 @@ public interface FileEntityRepository extends JpaRepository @Query("SELECT f.id FROM FileEntity f WHERE f.filePath = :filePath") String findFileIdByFilePath(@Param("filePath") String filePath); - long countByUserId(Long userId); + List findFileByUserIdAndStatus(Long userId, FileStatus status); } 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 b6bc0d0..a5ad109 100644 --- a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java @@ -217,7 +217,6 @@ public class FileEntityService { fileEntityRepository.save(fileEntity); } - @Transactional public void deleteFromDisk(FileEntity fileEntity) throws IOException { Path path = Paths.get(fileEntity.getFilePath()); @@ -267,6 +266,14 @@ public class FileEntityService { fileEntityRepository.save(fileEntity); } + public void clearTempFiles(long userId) throws IOException { + List fileByUserIdAndStatus = fileEntityRepository.findFileByUserIdAndStatus(userId, FileStatus.TEMP); + + for (FileEntity fileEntity : fileByUserIdAndStatus) { + deleteFromDisk(fileEntity); + } + } + public FileEntity findBySignature(String signature) { return fileEntityRepository.findBySignature(signature); } diff --git a/src/main/java/ru/soune/nocopy/service/file/impl/FileUploadServiceImpl.java b/src/main/java/ru/soune/nocopy/service/file/impl/FileUploadServiceImpl.java index de0c4aa..26c97a3 100644 --- a/src/main/java/ru/soune/nocopy/service/file/impl/FileUploadServiceImpl.java +++ b/src/main/java/ru/soune/nocopy/service/file/impl/FileUploadServiceImpl.java @@ -319,6 +319,10 @@ public class FileUploadServiceImpl implements FileUploadService { FileStatus status = findSimilar == 0 ? FileStatus.ACTIVE: FileStatus.TEMP; + if (status == FileStatus.TEMP) { + fileEntityService.clearTempFiles(session.getUserId()); + } + completeFileProcessingAsync(session, status); } else {