본문 바로가기
IntelliJ

TodoList 구현 (서비스 코드 구현)

by step 1 2021. 5. 30.
반응형
package org.example.service;

import lombok.AllArgsConstructor;
import org.example.model.TodoEntity;
import org.example.model.TodoRequest;
import org.example.repository.TodoRepository;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;

import java.util.List;

@Service
@AllArgsConstructor
public class TodoService {

    private final TodoRepository todoRepository;

    //    1. todo 리스트 목록에 아이템을 추가
    public TodoEntity add(TodoRequest request) {
        TodoEntity todoEntity = new TodoEntity();
        todoEntity.setTitle(request.getTitle());
        todoEntity.setOrder(request.getOrder());
        todoEntity.setCompleted(request.getCompleted());
        TodoEntity entity = this.todoRepository.save(todoEntity);
        return entity;
    }

    //    2. todo 리스트 목록 중 특정 아이템을 조회
    public TodoEntity searchById(Long id){
        // 값이 없으면 not found 처리
        return this.todoRepository.findById(id)
                .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
    }

    //    3. todo 리스트 전체 목록을 조회
    public List<TodoEntity> searchAll(){
        return this.todoRepository.findAll();
    }

    //    4. todo 리스트 목록 중 특정 아이템을 수정
    public TodoEntity updateById(Long id, TodoRequest request) {
        TodoEntity todoEntity = this.searchById(id);
        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 리스트 목록 중 특정 아이템을 삭제
    public void deleteById(Long id) {
    
        this.todoRepository.deleteById(id);
    }

    //    6. todo 리스트 전체 목록을 삭제
    public void deleteAll(){
        this.todoRepository.deleteAll();
    }
}
반응형

'IntelliJ' 카테고리의 다른 글

테스트 코드 작성  (0) 2021.06.05
TodoList 구현 (컨트롤러 구현)  (0) 2021.05.30
TodoList 구현 (repository 구현)  (0) 2021.05.30
TodoList 구현 (모델)  (0) 2021.05.30
인텔리제이 시작  (0) 2021.05.30