|
22 | 22 | import kr.suhsaechan.mapsy.place.repository.FolderRepository; |
23 | 23 | import kr.suhsaechan.mapsy.place.repository.PlaceRepository; |
24 | 24 | import java.util.List; |
| 25 | +import java.util.Optional; |
25 | 26 | import java.util.UUID; |
26 | 27 | import java.util.stream.Collectors; |
27 | 28 | import lombok.RequiredArgsConstructor; |
@@ -84,10 +85,10 @@ public UpdateFolderResponse updateFolder(Member member, UUID folderId, UpdateFol |
84 | 85 | Folder folder = getFolderWithOwnerValidation(folderId, member); |
85 | 86 |
|
86 | 87 | if (request.getName() != null) { |
87 | | - folder.setName(request.getName()); |
| 88 | + folder.updateName(request.getName()); |
88 | 89 | } |
89 | 90 | if (request.getVisibility() != null) { |
90 | | - folder.setVisibility(request.getVisibility()); |
| 91 | + folder.updateVisibility(request.getVisibility()); |
91 | 92 | } |
92 | 93 |
|
93 | 94 | Folder savedFolder = folderRepository.save(folder); |
@@ -151,9 +152,20 @@ public AddFolderPlaceResponse addPlaceToFolder(Member member, UUID folderId, Add |
151 | 152 | Place place = placeRepository.findById(request.getPlaceId()) |
152 | 153 | .orElseThrow(() -> new CustomException(ErrorCode.PLACE_NOT_FOUND)); |
153 | 154 |
|
154 | | - // ์ค๋ณต ์ฒดํฌ |
155 | | - if (folderPlaceRepository.existsByFolderAndPlaceAndDeletedAtIsNull(folder, place)) { |
156 | | - throw new CustomException(ErrorCode.FOLDER_PLACE_ALREADY_EXISTS); |
| 155 | + // ๊ธฐ์กด ๋ ์ฝ๋ ์กฐํ (Soft Delete ํฌํจ) |
| 156 | + Optional<FolderPlace> existingFolderPlace = folderPlaceRepository.findByFolderAndPlace(folder, place); |
| 157 | + |
| 158 | + if (existingFolderPlace.isPresent()) { |
| 159 | + FolderPlace fp = existingFolderPlace.get(); |
| 160 | + if (fp.isActive()) { |
| 161 | + // ์ด๋ฏธ ํ์ฑ ์ํ๋ฉด ์ค๋ณต ์๋ฌ |
| 162 | + throw new CustomException(ErrorCode.FOLDER_PLACE_ALREADY_EXISTS); |
| 163 | + } |
| 164 | + // Soft Delete๋ ๋ ์ฝ๋ ๋ณต์ |
| 165 | + fp.restore(); |
| 166 | + FolderPlace restoredFolderPlace = folderPlaceRepository.save(fp); |
| 167 | + log.info("Place restored to folder: folderPlaceId={}", restoredFolderPlace.getId()); |
| 168 | + return AddFolderPlaceResponse.from(restoredFolderPlace); |
157 | 169 | } |
158 | 170 |
|
159 | 171 | int maxPosition = folderPlaceRepository.findMaxPositionByFolder(folder); |
@@ -211,9 +223,19 @@ public void addPlaceToDefaultFolder(Member member, Place place) { |
211 | 223 | Folder defaultFolder = folderRepository.findByOwnerAndIsDefaultTrueAndDeletedAtIsNull(member) |
212 | 224 | .orElseGet(() -> createDefaultFolder(member)); |
213 | 225 |
|
214 | | - // ์ด๋ฏธ ๊ธฐ๋ณธ ํด๋์ ์์ผ๋ฉด ์คํต |
215 | | - if (folderPlaceRepository.existsByFolderAndPlaceAndDeletedAtIsNull(defaultFolder, place)) { |
216 | | - log.debug("Place already in default folder: placeId={}", place.getId()); |
| 226 | + // ๊ธฐ์กด ๋ ์ฝ๋ ์กฐํ (Soft Delete ํฌํจ) |
| 227 | + Optional<FolderPlace> existingFolderPlace = folderPlaceRepository.findByFolderAndPlace(defaultFolder, place); |
| 228 | + |
| 229 | + if (existingFolderPlace.isPresent()) { |
| 230 | + FolderPlace fp = existingFolderPlace.get(); |
| 231 | + if (fp.isActive()) { |
| 232 | + log.debug("Place already in default folder: placeId={}", place.getId()); |
| 233 | + return; |
| 234 | + } |
| 235 | + // Soft Delete๋ ๋ ์ฝ๋ ๋ณต์ |
| 236 | + fp.restore(); |
| 237 | + folderPlaceRepository.save(fp); |
| 238 | + log.info("Place restored to default folder: placeId={}", place.getId()); |
217 | 239 | return; |
218 | 240 | } |
219 | 241 |
|
|
0 commit comments