본문 바로가기
Side Project/To do List API

서비스 코드 구현

by BellOne4222 2024. 2. 3.

서비스 코드 구현

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