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

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);
    }
}

 

 

'프로젝트 > 프로젝트 회고' 카테고리의 다른 글

[팀 프로젝트-JPA 활용 게시판] branch 전략 및 패키지 구조  (1) 2025.04.14
[팀 프로젝트-JPA 활용 게시판] S.A 작성  (0) 2025.04.09
[일정관리]일정 생성 및 조회  (0) 2025.03.25
[일정관리]API 명세 및 ERD작성  (0) 2025.03.24
[자기소개4]프로젝트 마무리  (0) 2025.02.24
'프로젝트/프로젝트 회고' 카테고리의 다른 글
  • [팀 프로젝트-JPA 활용 게시판] branch 전략 및 패키지 구조
  • [팀 프로젝트-JPA 활용 게시판] S.A 작성
  • [일정관리]일정 생성 및 조회
  • [일정관리]API 명세 및 ERD작성
코딩로봇
코딩로봇
금융 IT 개발자
  • 코딩로봇
    쟈니의 일지
    코딩로봇
  • 전체
    오늘
    어제
    • 분류 전체보기 (136) N
      • JavaScript (8)
      • SQL (10)
      • 코딩테스트 (29)
        • Java (15)
        • SQL (12)
      • Java (10)
      • 프로젝트 (22) N
        • 트러블슈팅 (7)
        • 프로젝트 회고 (13) N
      • git,Github (2)
      • TIL (36) N
      • Spring (17) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스파르타 코딩 #부트캠프 #첫ot
    java #arraylist #list #배열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩로봇
[일정관리]일정 수정 및 삭제
상단으로

티스토리툴바