Add file info public
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-06-04 11:11:17 +07:00
parent 2ee9ac8a92
commit 8bc576da27
4 changed files with 26 additions and 2 deletions
@@ -76,7 +76,7 @@ public class ViolationHandler implements RequestHandler {
targetFiles = List.of(file);
} else {
targetFiles = fileEntityService.getAllUserFiles(userId);
targetFiles = fileEntityService.getAllUserFilesExcludingBlockedAndRemoved(userId);
}
LocalDateTime startDate = null;
@@ -23,6 +23,10 @@ public interface FileMonitoringRepository extends JpaRepository<FileMonitoringEn
@Query("SELECT fm FROM FileMonitoringEntity fm WHERE fm.isActive = true AND fm.monitoringType != 'NONE' AND fm.nextRun <= :now")
List<FileMonitoringEntity> findReadyForRun(@Param("now") LocalDateTime now);
@Query("SELECT fm FROM FileMonitoringEntity fm LEFT JOIN FETCH FileEntity f ON f.id = fm.file.id WHERE" +
" fm.isActive = true AND fm.monitoringType != 'NONE' AND fm.nextRun <= :now AND f.status IN :statuses")
List<FileMonitoringEntity> findReadyForRun(@Param("now") LocalDateTime now, @Param("statuses") List<String> statuses);
List<FileMonitoringEntity> findByMonitoringTypeAndIsActiveTrue(MonitoringType type);
@Query("SELECT COUNT(m) FROM FileMonitoringEntity m " +
@@ -8,6 +8,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.soune.nocopy.entity.file.FileStatus;
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
import ru.soune.nocopy.entity.notification.NotificationType;
import ru.soune.nocopy.repository.FileMonitoringRepository;
@@ -37,7 +38,8 @@ public class MonitoringScheduler {
log.info("Starting scheduled monitoring check at 02:01 MSK");
LocalDateTime now = LocalDateTime.now();
List<FileMonitoringEntity> readyForRun = monitoringRepository.findReadyForRun(now);
List<FileMonitoringEntity> readyForRun = monitoringRepository.findReadyForRun(now,
List.of(FileStatus.ACTIVE.name(), FileStatus.MODERATION.name()));
Map<Long, List<FileMonitoringEntity>> groupingFilesMonitoring = readyForRun.stream()
.collect(Collectors.groupingBy(FileMonitoringEntity::getUserId));
@@ -97,6 +97,24 @@ public class FileEntityService {
return allFiles;
}
@Transactional(readOnly = true)
public List<FileEntity> getAllUserFilesExcludingBlockedAndRemoved(Long userId) {
User user = userRepository.findById(userId).orElseThrow();
List<FileEntity> allFiles = new ArrayList<>();
if (user.getCompany() != null) {
for (Long uId : userRepository.findByCompanyId(user.getCompany().getId()).stream()
.map(User::getId)
.toList()) {
allFiles.addAll(getAllUserFiles(uId, List.of(FileStatus.ACTIVE, FileStatus.MODERATION)));
}
} else {
allFiles = getAllUserFiles(userId, List.of(FileStatus.ACTIVE, FileStatus.MODERATION));
}
return allFiles;
}
public List<FileEntity> getAllUserFiles(Long userId, List<FileStatus> statuses) {
User user = userRepository.findById(userId).orElseThrow();
List<FileEntity> allFiles = new ArrayList<>();