상세 컨텐츠

본문 제목

[WithParents] 약알림 수정 기능 구현, modifyMedication api 구현

Project/WithParents

by yooputer 2022. 12. 2. 15:44

본문

이번 포스팅에서는 medication을 수정하는 요청을 처리하는 api를 구현해보겠다


ModifyMedicationRequest 클래스 생성

dto패키지 > medication 패키지에 ModifyMedicationRequest 클래스를 생성하고

아래와 같이 작성한다.

@Getter
public class ModifyMedicationRequest {

    private Long medicationId;
    private String description;
    private List<Integer> dayOfTheWeekList;
    private LocalTime dosingTime;

}

MedicationService에 modifyMedication 메서드 구현

@Transactional
public MedicationDTO modifyMedication(
        Long medicationId,
        String description,
        List<Integer> dayOfTheWeekList,
        LocalTime dosingTime
) {

    Medication medication = medicationRepo.findById(medicationId)
            .orElseThrow(() -> new InvalidIdException(medicationId, "medication"));

    if (description != null) {
        medication.setDescription(description);
    }

    if (dayOfTheWeekList != null) {
        medication.setDayOfTheWeekList(
                dayOfTheWeekList.stream()
                        .map(String::valueOf)
                        .collect(Collectors.joining(" "))
        );
    }

    if (dosingTime != null) {
        medication.setDosingTime(dosingTime);
    }

    return MedicationDTO.entityToDto(medication);
    
}

 

만약 description이나 dayOfTheWeekList, dosingTime의 값이 null이라면 수정하지 않는다


modifyMedication api 구현

MedicationController에 다음과 같이 메서드를 작성한다

@PatchMapping("/api/medication/modifyMedication")
public MedicationDTO modifyMedication(
        @RequestBody ModifyMedicationRequest body
){
    return medicationService.modifyMedication(
            body.getMedicationId(),
            body.getDescription(),
            body.getDayOfTheWeekList(),
            body.getDosingTime()
    );
}

요청 보내보기

위와같은 request를 보내면 아래와같이 response가 도착한다

 

데이터베이스의 값도 잘 변경되는 것을 확인할 수 있다

관련글 더보기