NCBACK-34 add logic to find similar image in db
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2026-01-13 22:40:52 +07:00
parent 344ec075d4
commit 8ac73ff045
18 changed files with 394 additions and 188 deletions
@@ -15,16 +15,14 @@ import ru.soune.nocopy.dto.BaseRequest;
import ru.soune.nocopy.dto.BaseResponse;
import ru.soune.nocopy.dto.MessageCode;
import ru.soune.nocopy.dto.RegAnswer;
import ru.soune.nocopy.dto.file.ChunkUploadResponse;
import ru.soune.nocopy.dto.file.CompleteUploadResponse;
import ru.soune.nocopy.dto.file.FileEntityResponse;
import ru.soune.nocopy.dto.file.UploadProgress;
import ru.soune.nocopy.dto.file.*;
import ru.soune.nocopy.entity.AuthToken;
import ru.soune.nocopy.entity.file.FileStatus;
import ru.soune.nocopy.entity.file.UploadStatus;
import ru.soune.nocopy.exception.*;
import ru.soune.nocopy.handler.*;
import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.service.FileSimilarityService;
import ru.soune.nocopy.service.file.FileEntityService;
import ru.soune.nocopy.service.file.FileUploadService;
@@ -50,6 +48,8 @@ public class ApiController {
private final AuthTokenRepository authTokenRepository;
private final FileSimilarityService fileSimilarityService;
@PostMapping("/v{version}/data")
public ResponseEntity<?> handlePostRequest(@RequestBody BaseRequest request,
@PathVariable("version") int version) {
@@ -127,6 +127,16 @@ public class ApiController {
return ResponseEntity.ok().body(new BaseResponse(20004, MessageCode.SUCCESS.getCode(),
"Chunk uploaded successfully", responseBody));
} catch (DuplicateImageException e) {
log.error("Error uploading chunk", e);
ChunkUploadResponse responseBody = ChunkUploadResponse.builder()
.uploadId(uploadId)
.chunkNumber(chunkNumber)
.build();
return ResponseEntity.ok().body(new BaseResponse(
20004, MessageCode.DUPLICATE_FILE_UPLOAD.getCode(),
"Failed to upload chunk: " + e.getMessage(), responseBody));
} catch (Exception e) {
log.error("Error uploading chunk", e);
@@ -141,6 +151,11 @@ public class ApiController {
}
}
@GetMapping("/files/{fileId}/similar")
public List<SimilarFileResponse> getSimilarFiles(@PathVariable String fileId) {
return fileSimilarityService.findSimilarFiles(fileId);
}
@GetMapping("/v{version}/files/progress/{uploadId}")
public ResponseEntity<BaseResponse> getUploadProgress(
@PathVariable("version") int version,