This commit is contained in:
@@ -9,7 +9,6 @@ import ru.soune.nocopy.dto.file.FileResponse;
|
||||
import ru.soune.nocopy.entity.file.FileEntity;
|
||||
import ru.soune.nocopy.entity.file.FileStatus;
|
||||
import ru.soune.nocopy.entity.file.FileUploadSession;
|
||||
import ru.soune.nocopy.exception.DuplicateImageException;
|
||||
import ru.soune.nocopy.exception.FileEntityNotFoundException;
|
||||
import ru.soune.nocopy.repository.FileEntityRepository;
|
||||
import ru.soune.nocopy.service.FileSimilarityService;
|
||||
@@ -66,22 +65,6 @@ public class FileEntityService {
|
||||
|
||||
if (saved.getMimeType().startsWith("image")) {
|
||||
imageHashService.create(saved, Path.of(saved.getFilePath()));
|
||||
|
||||
var similarFiles = fileSimilarityService.findSimilarFiles(saved.getId());
|
||||
|
||||
boolean hasDuplicate = similarFiles.stream()
|
||||
.anyMatch(f -> f.getHammingDistance() <= 5);
|
||||
|
||||
if (hasDuplicate) {
|
||||
log.warn("Duplicate image detected for upload session {}. Rolling back.",
|
||||
session.getUploadId());
|
||||
throw new DuplicateImageException("Duplicate image detected for upload session " + session.getUploadId());
|
||||
}
|
||||
|
||||
similarFiles.stream()
|
||||
.filter(f -> f.getHammingDistance() > 5)
|
||||
.forEach(f -> log.info("Similar image found: {} (distance {})",
|
||||
f.getFileId(), f.getHammingDistance()));
|
||||
}
|
||||
|
||||
return saved;
|
||||
@@ -166,6 +149,8 @@ public class FileEntityService {
|
||||
|
||||
Files.delete(path);
|
||||
|
||||
markAsDeleted(fileEntity);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user