dev merge
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-04-22 17:10:25 +07:00
parent d29258855e
commit 5de7e828c2
2 changed files with 59 additions and 0 deletions
@@ -25,6 +25,10 @@ import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.file.FileEntityService;
import ru.soune.nocopy.service.file.FileStatsService;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@@ -79,6 +83,8 @@ public class FileEntityHandler implements RequestHandler {
return handleDeleteFile(request, fileRequest);
case "change_file_status":
return handleChangeStatus(request, fileRequest);
case "delete_files":
return handleDeleteFiles(request, fileRequest);
case "moderate_file":
return handleModerateFile(request, fileRequest);
case "submit_appeal":
@@ -684,6 +690,54 @@ public class FileEntityHandler implements RequestHandler {
request.getVersion()));
}
private BaseResponse handleDeleteFiles(BaseRequest request, FileEntityRequest fileRequest) {
List<String> fileIds = fileRequest.getFileIds();
List<String> deletedIds = new ArrayList<>();
List<String> failedIds = new ArrayList<>();
for (String fileId : fileIds) {
try {
FileEntity fileEntity = fileEntityRepository.findById(fileId)
.orElseThrow(() -> new FileEntityNotFoundException(fileId));
deleteFileIfExists(fileEntity.getFilePath());
deleteFileIfExists(fileEntity.getProtectedFilePath());
deleteFileIfExists(fileEntity.getThumbnailPath());
deleteFileIfExists(fileEntity.getMediumPath());
deletedIds.add(fileId);
log.info("Files deleted for entity: {}", fileId);
} catch (Exception e) {
failedIds.add(fileId);
log.error("Failed to delete files for entity: {}", fileId, e);
}
}
if (!deletedIds.isEmpty()) {
fileEntityRepository.deleteAllById(deletedIds);
log.info("Deleted {} entities from database", deletedIds.size());
}
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), failedIds);
}
private void deleteFileIfExists(String filePath) {
if (filePath != null && !filePath.isEmpty()) {
try {
Path path = Paths.get(filePath);
boolean deleted = Files.deleteIfExists(path);
if (deleted) {
log.debug("Deleted file: {}", filePath);
}
} catch (IOException e) {
log.warn("Failed to delete file: {}", filePath, e);
throw new RuntimeException("Failed to delete file: " + filePath, e);
}
}
}
private BaseResponse handleDeleteFile(BaseRequest request, FileEntityRequest fileRequest) {
try {
Long userId = authService.useUserAuthToken(fileRequest.getToken());