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);
}
}
'프로젝트 > 프로젝트 회고' 카테고리의 다른 글
[팀 프로젝트-JPA 활용 게시판] S.A 작성 (0) | 2025.04.09 |
---|---|
[일정관리]일정 생성 및 조회 (0) | 2025.03.25 |
[일정관리]API 명세 및 ERD작성 (0) | 2025.03.24 |
[자기소개4]프로젝트 마무리 (0) | 2025.02.24 |
[자기소개3]Firebase 에서 방명록 데이터 불러오기 (1) | 2025.02.20 |