프로젝트/프로젝트 회고

[일정관리]일정 수정 및 삭제

코딩로봇 2025. 3. 26. 09:44

https://computerreport.tistory.com/manage/newpost/77?type=post&returnURL=ENTRY

 

티스토리

좀 아는 블로거들의 유용한 이야기, 티스토리. 블로그, 포트폴리오, 웹사이트까지 티스토리에서 나를 표현해 보세요.

www.tistory.com

 

에 이어 특정 일정 정보를 수정하고 삭제하는 기능을 추가하였다.

 

 일정 수정

  • 할일 , 이름만 수정 가능
  • 요청시에 비밀번호를 함께 입력하여 동일한 비밀번호일때만 수정 허용
💡 주요 코드만 작성 

 

 TodoController

더보기
/**
 * Todo 항목을 수정하는 API.
 *
 * @param id 식별자
 * @param requestDto 수정할 Todo 데이터
 * @return {@link ResponseEntity<TodoResponseDto>} 수정된 Todo의 응답 데이터와 함께 200 OK 상태 코드
 * @exception ResponseStatusException 해당 ID의 Todo가 존재하지 않을 경우 404 Not Found
 */
@PatchMapping("/{id}")
public ResponseEntity<TodoResponseDto> updateTodo(
        @PathVariable long id,
        @RequestBody TodoRequestDto requestDto) {
    return new ResponseEntity<>(todoService.updateTodo(id, requestDto.getTodo(), requestDto.getName(), requestDto.getPassword()), HttpStatus.OK);
}

 

 

 TodoServiceImpl

더보기
/**
 * Todo 항목을 수정합니다.
 *
 * @param id 식별자
 * @param todo 수정할 할 일 내용
 * @param name 수정할 작성자 이름
 * @param password 비밀번호
 * @return {@link TodoResponseDto} 수정된 Todo의 응답 데이터
 * @exception ResponseStatusException 비밀번호가 일치하지 않거나 값이 없을 경우
 */
@Override
public TodoResponseDto updateTodo(Long id, String todo, String name, String password) {

    Todo todos = todoRepository.findTodoById(id);
    todos.setEditDate(new Date());

    if (todo == null && name == null) {
        throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "값이 없다");
    }

    if (todos.getPassword() == null) {
        throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "저장된 비밀번호가 없습니다.");
    }

    if (!todos.getPassword().equals(password)) {
        throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "비밀번호 일치 오류");
    }

    int updateRow = todoRepository.updateTodo(id, todo, name);

    if (updateRow == 0) {
        throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Does not exist id = " + id);
    }

    return new TodoResponseDto(todos);
}

 

 

 TodoRepositoryImpl

더보기
/**
 * Todo 항목을 수정합니다.
 *
 * @param id 수정할 Todo의 식별자
 * @param todo 수정할 할 일 내용 (null인 경우 이름만 수정)
 * @param name 수정할 작성자 이름
 * @return 수정된 Todo의 개수
 */
@Override
public int updateTodo(Long id, String todo, String name) {
    if (todo == null) {
        return jdbcTemplate.update("update todo set  name= ? where id = ?", name, id);
    } else {
        return jdbcTemplate.update("update todo set  todo =? where id = ?", todo, id);
    }
}

 

 

 일정 삭제

  • 입력한 고유 식별자의 데이터를 삭제
💡 주요 코드만 작성 

 TodoController

더보기
/**
 * Todo 항목을 삭제하는 API.
 *
 * @param id 식별자
 * @return {@link ResponseEntity<Void>} 200 OK 상태 코드
 * @exception ResponseStatusException 해당 ID의 Todo가 존재하지 않을 경우 404 Not Found
 */
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteTodo(@PathVariable Long id) {
    todoService.deleteTodo(id);
    return new ResponseEntity<>(HttpStatus.OK);
}

 

 TodoServiceImpl

더보기
/**
 * Todo 항목을 삭제합니다.
 *
 * @param id 삭제할 Todo의 식별자
 */
@Override
public void deleteTodo(Long id) {
    todoRepository.deleteTodo(id);
}

 

 

 TodoRepositoryImpl

더보기
/**
 * Todo 항목을 삭제합니다.
 *
 * @param id 삭제할 Todo의 식별자
 * @exception ResponseStatusException 해당 ID의 Todo가 존재하지 않을 경우 404 Not Found
 */
@Override
public void deleteTodo(Long id) {
    int deleteTodo = jdbcTemplate.update("DELETE FROM todo WHERE id = ?", id);
    if (deleteTodo == 0) {
        throw new ResponseStatusException(HttpStatus.NOT_FOUND, "삭제할 id 가 존재하지 않습니다" + id);
    }
}