diff --git a/src/main/java/ru/soune/nocopy/repository/FileMonitoringRepository.java b/src/main/java/ru/soune/nocopy/repository/FileMonitoringRepository.java index 1510d8a..75d29af 100644 --- a/src/main/java/ru/soune/nocopy/repository/FileMonitoringRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/FileMonitoringRepository.java @@ -20,6 +20,10 @@ public interface FileMonitoringRepository extends JpaRepository findByUserIdAndIsActiveTrue(Long userId); + @Query("SELECT fm FROM FileMonitoringEntity fm LEFT JOIN FETCH FileEntity f ON f.id = fm.file.id WHERE f.status IN :statuses " + + "AND f.userId = :userId AND fm.isActive = true AND fm.monitoringType != 'NONE'") + List findByUserIdAndIsActiveTrue(Long userId, @Param("statuses") List statuses); + @Query("SELECT fm FROM FileMonitoringEntity fm WHERE fm.isActive = true AND fm.monitoringType != 'NONE' AND fm.nextRun <= :now") List findReadyForRun(@Param("now") LocalDateTime now); 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 aa1e83e..e0f06aa 100644 --- a/src/main/java/ru/soune/nocopy/service/search/GlobalSearchService.java +++ b/src/main/java/ru/soune/nocopy/service/search/GlobalSearchService.java @@ -6,6 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.soune.nocopy.dto.search.GlobalSearchStartRequest; import ru.soune.nocopy.entity.file.FileEntity; +import ru.soune.nocopy.entity.file.FileStatus; import ru.soune.nocopy.entity.file.FileType; import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity; import ru.soune.nocopy.entity.search.GlobalSearchTask; @@ -58,13 +59,15 @@ public class GlobalSearchService { public List getFilesToProcess(GlobalSearchStartRequest request, Long userId) { if ("monitoring".equals(request.getSearchType())) { List monitoringFiles = - fileMonitoringRepository.findByUserIdAndIsActiveTrue(userId); + fileMonitoringRepository.findByUserIdAndIsActiveTrue(userId, List.of(FileStatus.ACTIVE.name(), + FileStatus.MODERATION.name())); return monitoringFiles.isEmpty() ? new ArrayList<>(): monitoringFiles.stream() .map(FileMonitoringEntity::getFile) .toList(); } else { - List fileIds = request.getFileIds().isEmpty() ? fileEntityService.getAllUserFiles(userId) + List fileIds = request.getFileIds().isEmpty() ? + fileEntityService.getAllUserFilesExcludingBlockedAndRemoved(userId) .stream() .filter(f -> f.getMimeType().equals(FileType.IMAGE.getDisplayName())) .map(FileEntity::getId)