20231227 (수) TodoApp 막바지

2023. 12. 27. 20:45TIL

오늘은 일단 TodoCard 부분과 Todo 부분을 완성하고 잘 작동하는지 Swagger로 들어가서 확인도 해봤다.

 

오늘 작성한 부분 중 내가 직접 응용해서 만들어본 코드

updateTodoStatus 메소드

override fun updateTodoStatus(todoCardId: Long, todoId: Long): TodoResponse{
    val todo = todoRepository.findByIdOrNull(todoId)
            ?: throw ModelNotFoundException("Todo", todoId)
    while(true) {
        if (todo.status == TodoStatus.INCOMPLETE) {
            todo.complete()
            break
        }
        if (todo.status == TodoStatus.COMPLETE) {
            todo.incomplete()
            break
        }
    }
    return todoRepository.save(todo).toResponse()
}

 

처음 Todo를 작성하면 기본값으로 INCOMPLETE 상태로 되어있고 이후에 추가로 업데이트하면 INCOMPLETE는 COMPLETE로 COMPLETE는 또 반대로 작동하도록 하고싶었다.

 

메소드를INCOMPLETE > COMPLETE 메소드와 COMPLETE> INCOMPLETE 메소드로 나눌까도 생각했지만 실제 앱에서는 완료/ 미완료 버튼을 따로 만들어둘것 같지도 않고 토글형식으로 만들것 같아서 하나의 메소드안에 집어넣기로 했다.

 

처음에는

override fun updateTodoStatus(todoCardId: Long, todoId: Long): TodoResponse{
    val todo = todoRepository.findByIdOrNull(todoId)
            ?: throw ModelNotFoundException("Todo", todoId)

        if (todo.status == TodoStatus.INCOMPLETE) {
            todo.complete()
        }
        if (todo.status == TodoStatus.COMPLETE) {
            todo.incomplete()
        }
    
    return todoRepository.save(todo).toResponse()
}

이런식으로 만들까 생각했지만 조금 살펴보니 if문이 2개이고 서로 계속 반복되는 현상이 생길 것 같아서 while문안에 넣어주고 하나의 작업이 끝나면 break 하는 형식으로 만들어봤다.

 

오늘의 한마디 : 음.. 오늘은 패스