서비스 코드 구현
package com.example.service;
import java.util.List;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;
import com.example.model.TodoEntity;
import com.example.model.TodoRequest;
import com.example.repository.TodoRepository;
import lombok.AllArgsConstructor;
@Service
@AllArgsConstructor
public class TodoService {
private final TodoRepository todoRepository;
// 1. todo 리스트 목록에 아이템을 추가
// request를 받아서 Entity를 반환하는 메서드
public TodoEntity add(TodoRequest request){
TodoEntity todoEntity = new TodoEntity();
todoEntity.setTitle(request.getTitle());
todoEntity.setOrder(request.getOrder());
todoEntity.setCompleted(request.getCompleted());
// TodoEntity를 저장하고 저장된 엔티티를 반환
return this.todoRepository.save(todoEntity);
}
// 2. todo 리스트 목록 중 특정 아이템을 조회
// 아이템을 조회하는 메서드
// 조회된 아이템을 반환하고 id 기준으로 조회
public TodoEntity searchById(Long id){
// id를 기반으로 TodoEntity를 조회하고, 존재하지 않으면 404 에러를 던집니다.
return this.todoRepository.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND)); // 404
}
// 3. todo 리스트 전체 목록을 조회
// 리스트의 전체 목록을 조회하는 메서드
// 전체 조회이므로 id는 필요없다.
public List<TodoEntity> searchAll(){
// 모든 TodoEntity 목록을 조회하여 반환
return this.todoRepository.findAll();
}
// 4. todo 리스트 목록 중 특정 아이템을 수정
// 수정할 아이템의 id값을 파라미터로 받아서 request 값으로 수정하는 메서드
public TodoEntity updateById(Long id, TodoRequest request){
// id를 기반으로 TodoEntity를 조회하고, 존재하지 않으면 404 에러를 던집니다.
TodoEntity todoEntity = this.searchById(id);
// request로 전달된 값으로 TodoEntity를 업데이트하고 저장한 뒤, 업데이트된 엔티티를 반환
if (request.getTitle() != null){
todoEntity.setTitle(request.getTitle());
}
if (request.getOrder() != null){
todoEntity.setOrder(request.getOrder());
}
if (request.getCompleted() != null){
todoEntity.setCompleted(request.getCompleted());
}
return this.todoRepository.save(todoEntity);
}
// 5. todo 리스트 목록 중 특정 아이템을 삭제
// id로 삭제
public void deleteById(Long id){
// id를 기반으로 TodoEntity를 삭제
this.todoRepository.deleteById(id);
}
// 6. todo 리스트 전체 목록을 삭제
// 전체 삭제
public void deleteAll(){
// 모든 TodoEntity를 삭제
this.todoRepository.deleteAll();
}
}
'Side Project > To do List API' 카테고리의 다른 글
Front Test (0) | 2024.02.03 |
---|---|
컨트롤러 구현 (0) | 2024.02.03 |
repository 구현 (0) | 2024.02.02 |
모델 구현 (0) | 2024.02.02 |
환경설정 및 세팅(개발 환경) (0) | 2024.02.02 |