diff --git a/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java b/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java index b2bebb0..bea5c6a 100644 --- a/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java @@ -10,16 +10,12 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Component; import ru.soune.nocopy.dto.*; import ru.soune.nocopy.dto.file.*; -import ru.soune.nocopy.entity.file.FileAppeal; -import ru.soune.nocopy.entity.file.FileEntity; -import ru.soune.nocopy.entity.file.FileStatus; -import ru.soune.nocopy.entity.file.ProtectionStatus; +import ru.soune.nocopy.entity.file.*; import ru.soune.nocopy.entity.file.moderation.ModerationLog; +import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity; import ru.soune.nocopy.exception.*; -import ru.soune.nocopy.repository.FileAppealRepository; -import ru.soune.nocopy.repository.FileEntityRepository; +import ru.soune.nocopy.repository.*; import ru.soune.nocopy.service.file.cloud.CloudStorageService; -import ru.soune.nocopy.repository.ModerationLogRepository; import ru.soune.nocopy.service.file.moderation.ModerationService; import ru.soune.nocopy.service.register.AuthService; import ru.soune.nocopy.service.file.FileEntityService; @@ -48,6 +44,8 @@ public class FileEntityHandler implements RequestHandler { private final FileEntityRepository fileEntityRepository; + private final FileMonitoringRepository fileMonitoringRepository; + private final CloudStorageService cloudStorageService; private final ModerationService moderationService; @@ -56,6 +54,8 @@ public class FileEntityHandler implements RequestHandler { private final ModerationLogRepository moderationLogRepository; + private final ImageHashRepository imageHashRepository; + @Override public BaseResponse handle(BaseRequest request) { try { @@ -715,7 +715,25 @@ public class FileEntityHandler implements RequestHandler { } if (!deletedIds.isEmpty()) { - fileEntityRepository.deleteAllById(deletedIds); + for (String fileId: deletedIds) { + FileMonitoringEntity monitoring = fileMonitoringRepository.findByFileId(fileId).orElse(null); + if (monitoring != null) { + fileMonitoringRepository.delete(monitoring); + } + + List logRepositoryByFileId = moderationLogRepository.findByFileId(fileId); + + moderationLogRepository.deleteAll(logRepositoryByFileId); + + imageHashRepository.deleteByFileId(fileId); + + List appeals = fileAppealRepository.findByFileId(fileId); + + fileAppealRepository.deleteAll(appeals); + + fileEntityRepository.deleteById(fileId); + } + log.info("Deleted {} entities from database", deletedIds.size()); } diff --git a/src/main/java/ru/soune/nocopy/repository/ModerationLogRepository.java b/src/main/java/ru/soune/nocopy/repository/ModerationLogRepository.java index f407060..e46a1d5 100644 --- a/src/main/java/ru/soune/nocopy/repository/ModerationLogRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/ModerationLogRepository.java @@ -10,4 +10,6 @@ public interface ModerationLogRepository extends JpaRepository findByFileIdOrderByCreatedAtDesc(String fileId); List findByModeratorId(Long moderatorId); + + List findByFileId(String fileId); } \ No newline at end of file