theJoseAlan / Spring-AlgaWorks

Estudos de Spring Boot pela AlgaWorks

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Spring-AlgaWorks

API REST desenvolvida durante o curso Mergulho Spring Rest pela AlgaWorks

Tecnologias/Ferramentas usadas

  • Alan-Java Java
  • Alan-MySql MySql
  • Alan-Spring Spring
  • Alan-Maven Maven
  • Alan-Postman Posman
  • Alan-Intellij Intellij

⭐ Breve descrição

O sistema possui cinco entidades (Cliente, Destinatário, Entrega, Ocorrencia e StatusEntrega)
obs.: StatusEntrega é uma enum

O programa funciona como um sistema de entregas onde o cliente insere seu nome, e-mail e telefone. Assim, é possível solicitar uma entrega que possui um Status (Pendente, finalizada ou cancelada), uma data de pedido e outra de finalização, a taxa, destinatário, ocorrencia e o cliente que fez o pedido.

A Ocorrencia é útil para colocar uma descrição de um eventual problema ou observação durante a entrega e/ou cancelamento de uma entrega. Assim, a ocorrencia está vinculada a uma entrega, possuindo uma descrição e a data do registro.

Um ponto interessante dessa API é a criação de classes para validação de exceções personalizadas e classes de validação.
Por exemplo: A classe Problema é responsável por indicar o Status HTTP de um erro de validação, retornar a data e hora, um título, uma lista com os campos que não passaram da validação. Campos é uma subclasse que retorna o nome do campo e a menssagem vinculada a seu erro de validação ("não pode ser nulo", "não pode estar em branco"...)

⚙️ Operações

  • Cliente: Criar, Listar todos, Obter por id, Atualizar e deletar
  • Entrega: Criar, Listar, Obter por id, Atualizar (seu status)
  • Ocorrencia: Criar (registrar), listar ocorrencias

🌫 Camadas (Pacotes)

Camada Função
Assembler Conversão de objetos
ExceptionHandler Tratar erros e exceções
Model Inserção/recepção de atributos
Config Configurar o bean
Controller Configurar verbos e status HTTP
Domain/Exception Atribuições para a camada de exceptionHandler
Domain/Model Inserir entidades com suas anotações, validações e tipos
Domain/Repository Gerenciamento das entidades
Domain/Service Regras de negócio do sistema e ações CRUD

👀 Observações

O sistema possui um pacote de migrations, assim ele mesmo cria seu Banco de Dados, Schemas e Tabelas
A interface ValidationGroups valida os atributos marcados com @NotNull

About

Estudos de Spring Boot pela AlgaWorks


Languages

Language:Java 100.0%