Skip to content

Commit 3136543

Browse files
authored
Merge pull request #41 from YAPP-Github/feat/T3-128
[T3-128] 수정 페이지에서 사용되는 루틴 단건 조회 API
2 parents 879ca65 + a2f7afd commit 3136543

3 files changed

Lines changed: 36 additions & 0 deletions

File tree

src/main/java/bitnagil/bitnagil_backend/routine/controller/RoutineController.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import bitnagil.bitnagil_backend.routine.domain.enums.RoutineType;
77
import bitnagil.bitnagil_backend.routine.request.DeleteRoutineByDayRequest;
88
import bitnagil.bitnagil_backend.routine.request.UpdateRoutineCompletionRequest;
9+
import bitnagil.bitnagil_backend.routine.response.RoutineSearchResultDto;
910
import jakarta.validation.constraints.NotNull;
1011

1112
import org.springframework.security.core.parameters.P;
@@ -28,6 +29,7 @@
2829
import bitnagil.bitnagil_backend.routine.request.UpdateRoutineRequest;
2930
import bitnagil.bitnagil_backend.routine.service.RoutineService;
3031
import bitnagil.bitnagil_backend.user.domain.User;
32+
import lombok.Getter;
3133
import lombok.RequiredArgsConstructor;
3234

3335
@RestController
@@ -92,4 +94,11 @@ public CustomResponseDto<Object> updateRoutineCompletionStatus(@CurrentUser User
9294

9395
return CustomResponseDto.from(null);
9496
}
97+
98+
// 루틴 수정 페이지에서 사용되는 루틴 단건 조회 API
99+
@GetMapping("{routineId}")
100+
public CustomResponseDto<RoutineSearchResultDto> getRoutine(@CurrentUser User user, @PathVariable UUID routineId) {
101+
102+
return CustomResponseDto.from(routineService.getRoutine(user, routineId));
103+
}
95104
}

src/main/java/bitnagil/bitnagil_backend/routine/controller/spec/RoutineSpec.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.time.LocalDate;
44
import java.util.UUID;
55

6+
import org.springframework.web.bind.annotation.PathVariable;
67
import org.springframework.web.bind.annotation.RequestBody;
78

89
import bitnagil.bitnagil_backend.global.annotation.CurrentUser;
@@ -15,6 +16,7 @@
1516
import bitnagil.bitnagil_backend.routine.request.UpdateRoutineCompletionRequest;
1617
import bitnagil.bitnagil_backend.routine.request.UpdateRoutineRequest;
1718
import bitnagil.bitnagil_backend.routine.response.RoutineSearchResponse;
19+
import bitnagil.bitnagil_backend.routine.response.RoutineSearchResultDto;
1820
import bitnagil.bitnagil_backend.user.domain.User;
1921
import io.swagger.v3.oas.annotations.Operation;
2022
import io.swagger.v3.oas.annotations.Parameter;
@@ -58,4 +60,8 @@ CustomResponseDto<Object> updateRoutineCompletionStatus(User user,
5860
@Operation(summary = "선택한 요일(당일)만 루틴을 삭제합니다.")
5961
@ApiErrorCodeExamples({ErrorCode.NOT_FOUND_ROUTINE, ErrorCode.ROUTINE_USER_NOT_MATCHED})
6062
CustomResponseDto<Object> deleteRoutineByDay(User user, DeleteRoutineByDayRequest deleteRoutineByDayRequest);
63+
64+
@Operation(summary = "루틴 수정 페이지에서 사용되는 루틴 단건을 조회합니다.")
65+
@ApiErrorCodeExamples({ErrorCode.NOT_FOUND_ROUTINE, ErrorCode.ROUTINE_USER_NOT_MATCHED})
66+
CustomResponseDto<RoutineSearchResultDto> getRoutine(User user, UUID routineId);
6167
}

src/main/java/bitnagil/bitnagil_backend/routine/service/RoutineService.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.ArrayList;
99
import java.util.HashMap;
1010
import java.util.Map;
11+
import java.util.stream.Collectors;
1112

1213
import bitnagil.bitnagil_backend.changedRoutine.domain.ChangedRoutine;
1314
import bitnagil.bitnagil_backend.changedRoutine.domain.ChangedSubRoutine;
@@ -16,6 +17,7 @@
1617
import bitnagil.bitnagil_backend.changedRoutine.repository.ChangedSubRoutineRepository;
1718
import bitnagil.bitnagil_backend.emotionMarble.domain.EmotionMarble;
1819
import bitnagil.bitnagil_backend.emotionMarble.repository.EmotionMarbleRepository;
20+
import bitnagil.bitnagil_backend.global.entity.HistoryPk;
1921
import bitnagil.bitnagil_backend.routine.domain.RoutineCompletion;
2022
import bitnagil.bitnagil_backend.routine.domain.enums.RoutineType;
2123
import bitnagil.bitnagil_backend.routine.repository.RoutineCompletionRepository;
@@ -190,6 +192,25 @@ public RoutineSearchResponse getRoutines(User user, LocalDate startDate, LocalDa
190192
return queryRoutines(user, startDate, endDate);
191193
}
192194

195+
// routineId에 대한 단일 루틴 조회하는 메서드입니다.
196+
@Transactional(readOnly = true)
197+
public RoutineSearchResultDto getRoutine(User user, UUID routineId) {
198+
LocalDateTime now = LocalDateTime.now();
199+
200+
Routine routine = routineValidator.validateRoutineOwnership(routineId, user, now);
201+
202+
List<SubRoutine> subRoutines = subRoutineRepository.findByRoutineId(routine.getRoutinePk().getId());
203+
204+
// 서브 루틴 목록 Dto로 변환
205+
List<SubRoutineSearchResultDto> subRoutineSearchResultDtos =
206+
subRoutines.stream()
207+
.map(subRoutine -> routineMapper.toSubRoutineSearchResultDto(subRoutine, null))
208+
.toList();
209+
210+
// 루틴 관련 정보 Dto로 변환
211+
return routineMapper.toRoutineSearchResultDto(routine, subRoutineSearchResultDtos, null);
212+
}
213+
193214
// 루틴의 완료 여부를 갱신하는 메서드입니다.
194215
@Transactional
195216
public void updateRoutineCompletionStatus(User user, UpdateRoutineCompletionRequest request) {

0 commit comments

Comments
 (0)