From 5644826131259a5ce28d31aea2d18572e0d7c9f5 Mon Sep 17 00:00:00 2001 From: 1026hz <1026hzz@gmail.com> Date: Fri, 10 Oct 2025 15:11:25 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20folder=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/FolderCommandServiceImpl.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/project/syncly/domain/folder/service/FolderCommandServiceImpl.java b/src/main/java/com/project/syncly/domain/folder/service/FolderCommandServiceImpl.java index e862d6a..7c3a00e 100644 --- a/src/main/java/com/project/syncly/domain/folder/service/FolderCommandServiceImpl.java +++ b/src/main/java/com/project/syncly/domain/folder/service/FolderCommandServiceImpl.java @@ -92,13 +92,11 @@ public FolderResponseDto.Create create(Long workspaceId, FolderRequestDto.Create } } - // [4] 같은 부모 안에 동일한 이름의 폴더 존재하는지 확인 - if (folderRepository.existsByWorkspaceIdAndParentIdAndName(workspaceId, parentId, requestDto.name())) { - throw new FolderException(FolderErrorCode.DUPLICATE_FOLDER_NAME); - } + // [4] 같은 부모 안에 중복되지 않는 고유한 폴더명 생성 + String uniqueFolderName = generateUniqueFolderName(workspaceId, parentId, requestDto.name()); // [5] 폴더 생성 - parentId를 업데이트된 값으로 사용, 올바른 workspaceMemberId 사용 - FolderRequestDto.Create updatedRequestDto = new FolderRequestDto.Create(parentId, requestDto.name()); + FolderRequestDto.Create updatedRequestDto = new FolderRequestDto.Create(parentId, uniqueFolderName); Folder folder = folderRepository.save(FolderConverter.toFolder(workspaceId, updatedRequestDto, workspaceMember.getId())); folderClosureCommandService.updateOnCreate(parentId, folder.getId()); return FolderConverter.toFolderResponse(folder); @@ -354,6 +352,19 @@ public FolderResponseDto.Message hardDeleteFolder(Long workspaceId, Long folderI return new FolderResponseDto.Message("폴더가 완전히 삭제되었습니다."); } + // 같은 부모 폴더 내에서 중복되지 않는 고유한 폴더명 생성 (1), (2) .. 순차 증가 + private String generateUniqueFolderName(Long workspaceId, Long parentId, String originalName) { + String uniqueName = originalName; + int counter = 1; + + while (folderRepository.existsByWorkspaceIdAndParentIdAndNameAndDeletedAtIsNull(workspaceId, parentId, uniqueName)) { + uniqueName = originalName + "(" + counter + ")"; + counter++; + } + + return uniqueName; + } + // 삭제된 폴더의 하위 폴더들을 재귀적으로 찾는 헬퍼 메서드 private List findDeletedDescendants(Long folderId) { List allIds = new java.util.ArrayList<>(); From ac7e3fe2d8d2f09f84dbf95ba85184dace3d24e9 Mon Sep 17 00:00:00 2001 From: 1026hz <1026hzz@gmail.com> Date: Fri, 10 Oct 2025 15:14:36 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=EC=9D=B4=EC=8A=88=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=EC=9C=BC=EB=A1=9C=20=EB=8B=AB=ED=9E=88=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/pull_request-template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/pull_request-template.md b/.github/pull_request-template.md index 5c26076..7c08489 100644 --- a/.github/pull_request-template.md +++ b/.github/pull_request-template.md @@ -1,5 +1,5 @@ # ☝️Issue Number -close # 이슈번호 +closes # 이슈번호 ## 📌 개요