dev add monitoring basic
Test Workflow / test (push) Successful in 4s

This commit is contained in:
vladp
2026-02-27 17:57:55 +07:00
parent 76aa04e174
commit c09a3a3a18
21 changed files with 815 additions and 7 deletions
@@ -0,0 +1,25 @@
package ru.soune.nocopy.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
import ru.soune.nocopy.entity.monitoring.MonitoringType;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
@Repository
public interface FileMonitoringRepository extends JpaRepository<FileMonitoringEntity, String> {
Optional<FileMonitoringEntity> findByFileId(String fileId);
List<FileMonitoringEntity> findByUserIdAndIsActiveTrue(Long userId);
@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);
List<FileMonitoringEntity> findByMonitoringTypeAndIsActiveTrue(MonitoringType type);
}
@@ -0,0 +1,30 @@
package ru.soune.nocopy.repository;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import ru.soune.nocopy.entity.monitoring.FoundViolationEntity;
import java.time.LocalDateTime;
import java.util.List;
@Repository
public interface FoundViolationRepository extends JpaRepository<FoundViolationEntity, String> {
List<FoundViolationEntity> findByFileIdOrderByFoundAtDesc(String fileId);
List<FoundViolationEntity> findByUserIdOrderByFoundAtDesc(Long userId);
@Query("SELECT fv FROM FoundViolationEntity fv WHERE fv.userId = :userId AND fv.isNew = true")
List<FoundViolationEntity> findNewViolationsByUser(@Param("userId") Long userId);
@Query("SELECT fv FROM FoundViolationEntity fv WHERE fv.file.id = :fileId AND fv.foundUrl = :foundUrl")
List<FoundViolationEntity> findDuplicate(@Param("fileId") String fileId, @Param("foundUrl") String foundUrl);
List<FoundViolationEntity> findByFoundAtBetween(LocalDateTime start, LocalDateTime end);
@Query("SELECT COUNT(fv) FROM FoundViolationEntity fv WHERE fv.userId = :userId AND fv.isNew = true")
long countNewByUserId(@Param("userId") Long userId);
}