본문 바로가기
Spring

Spring Day 13 : 회원의 상태 변경(isChecked())

by 우 석 2024. 2. 6.

문제

프로젝트 진행 중에 회원이 일정을 등록하고, 일정이 완료되었는지 확인하는 로직을 작성했다.

아래의 기존 코드는 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);
}