diff --git a/src/main/java/ru/soune/nocopy/service/search/GlobalSearchAsyncProcessor.java b/src/main/java/ru/soune/nocopy/service/search/GlobalSearchAsyncProcessor.java index fdc1008..0d3d832 100644 --- a/src/main/java/ru/soune/nocopy/service/search/GlobalSearchAsyncProcessor.java +++ b/src/main/java/ru/soune/nocopy/service/search/GlobalSearchAsyncProcessor.java @@ -12,6 +12,7 @@ import ru.soune.nocopy.entity.notification.NotificationType; import ru.soune.nocopy.entity.search.GlobalSearchResult; import ru.soune.nocopy.entity.search.GlobalSearchTask; import ru.soune.nocopy.entity.search.SearchStatus; +import ru.soune.nocopy.repository.FileEntityRepository; import ru.soune.nocopy.repository.GlobalSearchResultRepository; import ru.soune.nocopy.repository.GlobalSearchTaskRepository; import ru.soune.nocopy.service.notification.NotificationService; @@ -45,14 +46,19 @@ public class GlobalSearchAsyncProcessor { private final NotificationService notificationService; + private final FileEntityRepository fileEntityRepository; + @Async @Transactional - public void processFilesAsync(String taskId, List filesToProcess, Long userId) { + public void processFilesAsync(String taskId, List filesToProcess, Long userId) { GlobalSearchTask task = globalSearchTaskRepository.findById(taskId).orElseThrow(); try { for (int i = 0; i < filesToProcess.size(); i++) { - FileEntity file = filesToProcess.get(i); + String uuid = filesToProcess.get(i); + FileEntity file = fileEntityRepository.findById(uuid) + .orElseThrow(() -> new RuntimeException("File not found: " + uuid)); + tariffInfoService.writeOffTokens(userId, TariffConstants.TOKEN_VALUE_FOR_SEARCH); GlobalSearchResult result = processFile(file, taskId, userId); globalSearchResultRepository.save(result); diff --git a/src/main/java/ru/soune/nocopy/service/search/GlobalSearchService.java b/src/main/java/ru/soune/nocopy/service/search/GlobalSearchService.java index e5c29a6..95a57e1 100644 --- a/src/main/java/ru/soune/nocopy/service/search/GlobalSearchService.java +++ b/src/main/java/ru/soune/nocopy/service/search/GlobalSearchService.java @@ -46,7 +46,9 @@ public class GlobalSearchService { globalSearchTaskRepository.save(task); - asyncProcessor.processFilesAsync(task.getTaskId(), filesToProcess, userId); + List fileIds = filesToProcess.stream().map(FileEntity::getId).toList(); + + asyncProcessor.processFilesAsync(task.getTaskId(), fileIds, userId); return task.getTaskId(); }