diff --git a/src/main/java/com/jobnote/domain/applicationformdocument/dto/ApplicationFormDocumentRequest.java b/src/main/java/com/jobnote/domain/applicationformdocument/dto/ApplicationFormDocumentRequest.java index ac80beb..03dad75 100644 --- a/src/main/java/com/jobnote/domain/applicationformdocument/dto/ApplicationFormDocumentRequest.java +++ b/src/main/java/com/jobnote/domain/applicationformdocument/dto/ApplicationFormDocumentRequest.java @@ -6,10 +6,8 @@ import jakarta.validation.constraints.NotNull; public record ApplicationFormDocumentRequest( - Long id, - @NotNull(message = "문서 ID는 null일 수 없습니다.") - Long documentId + Long id ) { public ApplicationFormDocument toEntity(final ApplicationForm form, final Document document) { return ApplicationFormDocument.builder() diff --git a/src/main/java/com/jobnote/domain/applicationformdocument/service/ApplicationFormDocumentService.java b/src/main/java/com/jobnote/domain/applicationformdocument/service/ApplicationFormDocumentService.java index bfbe284..4401672 100644 --- a/src/main/java/com/jobnote/domain/applicationformdocument/service/ApplicationFormDocumentService.java +++ b/src/main/java/com/jobnote/domain/applicationformdocument/service/ApplicationFormDocumentService.java @@ -69,7 +69,7 @@ public Map> getAllSimpleGroupedByApplicationF @Transactional public void saveAll(final Long userId, final ApplicationForm form, final List requests) { for (ApplicationFormDocumentRequest request : requests) { - Document document = getByIdOrThrow(request.documentId()); + Document document = getByIdOrThrow(request.id()); document.validateOwner(userId); ApplicationFormDocument entity = request.toEntity(form, document); @@ -82,6 +82,9 @@ public void saveAll(final Long userId, final ApplicationForm form, final List requests) { // 기존 연결된 문서 조회 List existsDocuments = getAllByApplicationFormId(userId, form.getId()); + Set existsIds = existsDocuments.stream() + .map(document -> document.getDocument().getId()) + .collect(Collectors.toSet()); // 요청 문서 ID 목록 Set requestsIds = requests.stream() @@ -91,14 +94,14 @@ public void updateAll(final Long userId, final ApplicationForm form, final List< // 삭제 : 기존 문서 중 요청에 없는 문서 삭제 for (ApplicationFormDocument document : existsDocuments) { - if (!requestsIds.contains(document.getId())) { + if (!requestsIds.contains(document.getDocument().getId())) { delete(document); } } - // 신규 생성 + // 신규 생성 : 새로운 id for (ApplicationFormDocumentRequest req : requests) { - if (req.id() == null) { + if (!existsIds.contains(req.id())) { saveAll(userId, form, List.of(req)); } }