문제
프로젝트 진행 중에 회원이 일정을 등록하고, 일정이 완료되었는지 확인하는 로직을 작성했다.
아래의 기존 코드는 entity에 기본값을 false로 주고 일정 완료 api를 보내면
todo.setCompleted(true)를 호출하여 false 값을 ture로 완료되도록 수정되도록 작성했다.
하지만 완료된 일정을 다시 수정하고 싶을 경우 진행 중인 상태로 되돌리는 로직을 작성하지 않았다.
결국 checkbox 기능이 필요함을 알게 되었다.
@Transactional
public TodoResponseDto completeTodo(Long id, User user) {
Todo todo = todoRepository.findByIdAndUserId(id, user.getId()).orElseThrow(
() -> new IllegalArgumentException("사용자의 게시글을 찾을 수 없습니다.")
);
todo.setCompleted(true);
todoRepository.save(todo);
return new TodoResponseDto(todo);
}
해결방안
entity 클래스에 아래의 코드를 작성한 뒤,
public void isChecked() {
this.isCompleted = !this.isCompleted;
}
ResponseDto 객체를 생성할 때 on/off 형식으로 완료 상태를 수정할 수 있도록 작성하였다.
@Transactional
public TodoResponseDto checkedTodo(Long todoId, User user) {
Todo todo = getPostByRepository(todoId, user);
Todo.isChecked();
return new TodoResponseDto(todo, user);
}
'Spring' 카테고리의 다른 글
| Spring Day 15 : API 명세서 작성(postman) (0) | 2024.02.08 |
|---|---|
| Spring Day 14 : SQL 제약조건 (0) | 2024.02.07 |
| Spring Day 12 : @AuthenticationPrincipal (0) | 2024.02.05 |
| Spring Day 11 : 로그인 성공 시 메세지와 StatusCode (0) | 2024.02.02 |
| Spring Day 10 : 인증과 인가 (1) | 2024.02.01 |