Este projeto consiste em uma aplicação para gerenciar cadastros de produtos/serviços, pedidos e itens de pedido, desenvolvida como parte de uma prova de nível I. Utiliza tecnologias mínimas, incluindo PostgreSQL como banco de dados, Java 8+, JPA para mapeamento objeto-relacional e REST para comunicação utilizando JSON.
- PostgreSQL (REQUERIDO)
- Java 8+ (REQUERIDO)
- Maven (REQUERIDO)
- Spring (REQUERIDO)
- JPA (REQUERIDO)
- REST com JSON (REQUERIDO)
- Flyway
O sistema deve atender aos seguintes requisitos:
- Deverá ser desenvolvido um cadastro (Create/Read/Update/Delete/List com paginação) para as seguintes entidades: produto/serviço, pedido e itens de pedido.
- Todos as entidades deverão ter um ID único do tipo UUID gerado automaticamente.
- No cadastro de produto/serviço deverá ter uma indicação para diferenciar um produto de um serviço.
- Deverá ser possível aplicar um percentual de desconto no pedido, porém apenas para os itens que sejam produto (não serviço); o desconto será sobre o valor total dos produtos.
- Somente será possível aplicar desconto no pedido se ele estiver na situação Aberto (Fechado bloqueia).
- Não deve ser possível excluir um produto/serviço se ele estiver associado a algum pedido.
- Não deve ser possível adicionar um produto desativado em um pedido.
- A prova deverá ser entregue completa (todos os itens resolvidos).
- Deverão ser criados testes automatizados.
- O código não poderá ter erros de compilação.
- Deverá haver uma documentação mínima de como executar o projeto e suas funcionalidades
Para executar o projeto, siga estes passos:
- Clone o repositório para sua máquina.
- Abra o projeto em sua IDE de preferência.
- Configure o arquivo
application.yml
com as credenciais do seu banco de dados PostgreSQL. - Importe a coleção de requisições do Postman para testar a API que está na pasta 'postman'.
- Execute os testes.
- Execute a aplicação e rode as requisições no Postman.