diff --git a/src/main/java/ru/soune/nocopy/entity/violation/Violation.java b/src/main/java/ru/soune/nocopy/entity/violation/Violation.java index 2c65045..803b43a 100644 --- a/src/main/java/ru/soune/nocopy/entity/violation/Violation.java +++ b/src/main/java/ru/soune/nocopy/entity/violation/Violation.java @@ -21,9 +21,12 @@ public class Violation { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(name = "url", nullable = false, unique = true) + @Column(name = "url", nullable = false, columnDefinition = "TEXT") private String url; + @Column(name = "url_hash", unique = true) + private String urlHash; + @Column(name = "page_url") private String pageUrl; diff --git a/src/main/java/ru/soune/nocopy/repository/ViolationRepository.java b/src/main/java/ru/soune/nocopy/repository/ViolationRepository.java index b73ec54..ccc6f14 100644 --- a/src/main/java/ru/soune/nocopy/repository/ViolationRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/ViolationRepository.java @@ -31,7 +31,7 @@ public interface ViolationRepository extends JpaRepository { List findByFileEntityAndStatusAndCreatedDateBetween(FileEntity file, String status, LocalDateTime startDate, LocalDateTime endDate); - boolean existsByUrl(String url); + boolean existsByUrlHash(String urlHash); Optional findById(Long id); diff --git a/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java b/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java index 9d8660d..40aa0c4 100644 --- a/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java +++ b/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java @@ -1,6 +1,7 @@ package ru.soune.nocopy.service.violation; import lombok.AllArgsConstructor; +import org.apache.commons.codec.digest.DigestUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -27,8 +28,9 @@ public class ViolationService { public void processViolation(YandexSearchResponse.ImageResult imageResult, FileEntity file, GlobalSearchResult result) { String url = imageResult.getUrl(); + String urlHash = DigestUtils.sha256Hex(url); - if (!violationRepository.existsByUrl(url)) { + if (!violationRepository.existsByUrlHash(urlHash)) { Violation violation = new Violation(); if (result != null) { @@ -37,6 +39,7 @@ public class ViolationService { violation.setHost(imageResult.getHost()); violation.setUrl(url); + violation.setUrlHash(urlHash); violation.setPageUrl(imageResult.getPageUrl()); violation.setPageTitle(imageResult.getPageTitle()); violation.setFileEntity(file);