// src/main/java/com/example/iwreactspring/service/TodoService.java
package com.example.iwreactspring.service;
import java.util.List;
import java.util.ArrayList;
import com.example.iwreactspring.model.TodoItem;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.codecs.pojo.PojoCodecProvider;
import org.bson.Document;
import com.example.iwreactspring.repository.TodoRepository;
@Service
public class TodoService {
@Autowired
private TodoRepository todoRepository;
public List getTodos() {
return todoRepository.findAll();
}
public TodoItem createTodo(TodoItem newTodo) {
TodoItem savedTodo = todoRepository.save(newTodo);
return savedTodo;
}
public TodoItem getTodo(String id) {
return todoRepository.findById(id).orElse(null);
}
public boolean deleteTodo(String id) {
TodoItem todoToDelete = getTodo(id);
if (todoToDelete != null) {
todoRepository.deleteById(id);
return true;
} else {
return false;
}
}
public TodoItem saveTodo(TodoItem todoItem) {
TodoItem savedTodo = todoRepository.save(todoItem);
return savedTodo;
}
}
Nós anotamos esta classe com @Service
para denotá-lo como uma classe de serviço. Novamente, isso não é estritamente necessário, porque o Spring pode usar a classe como um bean injetado sem a anotação, mas anotar a classe torna as coisas mais descritivas. Em seguida, usamos @AutoWired
para trazer o TodoRepository
classe em. Isso será preenchido pelo Spring com base no tipo de classe, que é o com.example.iwreactspring.repository.TodoRepository
vimos antes.
Por padrão, o Spring usa injeção singleton (uma instância da classe bean injetada), o que funciona bem para nós.
Operações CRUD na classe de serviço
Cada método nesta classe é dedicado a executar uma operação CRUD usando o repositório. Por exemplo, precisamos de uma maneira de obter todas as tarefas no banco de dados e getTodos()
faz isso por nós. O Repository
a classe também torna isso muito fácil: return todoRepository.findAll()
retorna todos os registros (também conhecido como documentos) na coleção de tarefas (também conhecido comobase de dados).