Descrição:
Nesta atividade, vocês deverão desenvolver uma API de um restaurante utilizando Spring Boot. A API deverá conter duas classes principais: Prato
e Restaurante
. O restaurante deverá oferecer pratos veganos, vegetarianos ou tradicionais, utilizando um enum para representar esses tipos. Vocês também deverão usar classes records para receber os dados da API.
Requisitos:
- Criação das Classes:
- Classe Prato:
- Atributos:
id
(Long)nome
(String)descricao
(String)preco
(Double)tipo
(TipoPrato – enum)
- Atributos:
- Classe Restaurante:
- Atributos:
id
(Long)nome
(String)endereco
(String)listaDePratos
(List<Long>) – Lista de IDs dos pratos, inicialmente vazia
- Atributos:
- Classe Prato:
- Enum TipoPrato:
- Valores:
- VEGANO
- VEGETARIANO
- TRADICIONAL
- Valores:
- Classes Record:
- PratoDto:
- Atributos:
nome
(String)descricao
(String)preco
(Double)tipo
(TipoPrato)
- Atributos:
- RestauranteDto:
- Atributos:
nome
(String)endereco
(String)
- Atributos:
- AdicionarPratoDto:
- Atributos:
restauranteId
(Long)nome
(String)descricao
(String)preco
(Double)tipo
(TipoPrato)
- Atributos:
- PratoDto:
- Funcionalidades da API:
- CRUD de Pratos:
- Os pratos serão criados diretamente ao serem adicionados aos restaurantes, não haverá endpoints separados para criação de pratos.
- CRUD de Restaurantes:
- Criar, ler, atualizar e deletar restaurantes.
- Associar pratos aos restaurantes por meio de um endpoint específico.
- CRUD de Pratos:
- Estrutura do Projeto:
- Utilize o Spring Boot para configurar a aplicação.
- Não será utilizado um banco de dados; use estruturas de dados (
List
eMap
) para armazenar os dados em memória. - Implemente os serviços, controladores e repositórios necessários utilizando listas em memória para persistência dos dados.
- Endpoints:
- Restaurantes:
POST /restaurantes
– Criar o restaurante.PUT /restaurantes
– Atualizar o restaurante.DELETE /restaurantes
– Deletar o restaurante.POST /restaurantes/pratos
– Adicionar um prato a um restaurante.GET /restaurantes/
pratos – Listar todos os pratos do restaurantee.GET /restaurantes/prato
/{idPrato} – Obter detalhes de um prato específico.
- Restaurantes: