Gerenciamento de clientes e endereços

Este projeto de API tem como objetivo gerenciar informações de clientes e endereços utilizando.

Observações

  • Foi adicionado ao projeto o arquivo Teste api desafio.postman_collection.json contendo os testes de todas as funções da classe controller
  • Optei por não criar o metodo de atualizar o endereço do cliente, ao inves disso fazer o processo de excluir o endereço e criar um novo
  • Na função updateCliente() da classe controller decidi não utilizar a anotação @Valid para caso queira atualizar somente um campo do cliente não precisar preencher todos os outros campos,na função a validação será feita na função usada da classe clienteService
  • A função getClienteEndereco(@PathVariable Long clienteId, @PathVariable Long enderecoId) da classe controller busca no banco de dados um endereco com id informado associado ao cliente, caso não haja, retorna o erro EndrecoNotFound ou ClienteNotFound se não tiver nenhum cliente com o id passado

Funcionalidades

A API oferece as seguintes funcionalidades:

  • Cadastro de clientes
  • Cadastro de endereços para um cliente
  • Consulta de clientes por id
  • Consulta de endereços por id
  • Consulta de todos os endereços de um cliente
  • Consulta de todos os endereços no geral
  • Consulta de todos os clientes
  • Atualização de endereco principal
  • Atualização de data de nascimento, nome ou endreço de clientes(pode ser atualizado um ou mais campos usando a mesma função)
  • Exclusão de clientes
  • Exclusão de endereços(pelo id do cliente+id do enredereço ou so com o id do endereco)

Tecnologias utilizadas

As principais tecnologias utilizadas neste projeto foram:

  • Java
  • JUnit
  • Spring Framework
  • H2 database

Executando o projeto

Para executar o projeto, siga os seguintes passos:

  1. Clone o repositório: git clone https://github.com/arthur-j1/desafio-artornattus.git
  2. Acesse o diretório do projeto: cd desafio-artornattus
  3. Abra o projeto em sua IDE de preferência
  4. Execute a classe DesafioArtornattusApplication para iniciar a aplicação
  5. Caso queira executar os testes de reposta das url's basta instalar o postman na sua máquina e importar o arquivo Teste api desafio.postman_collection.json no postman

Rotas

Método Rota Descrição
GET /clientes Retorna a lista de todos os clientes cadastrados.
GET /enderecos Retorna a lista de todos os endereços cadastrados.
GET /cliente/{id} Retorna um cliente específico por ID.
GET /cliente/{id}/enderecos Retorna a lista de endereços de um cliente específico.
GET /endereco/{id} Retorna um endereço específico por ID.
GET /{idCliente}/buscar-endereco/{idEndereço} Retorna um endereço específico por ID dentro dos endereços do cliente, caso não exista endereço ou cliente com esse ID é retornada uma exceção personalizada.
GET /{idCliente}/endereco/principal Retorna o endereço principal do cliente dono do ID.
POST / Cria um novo cliente (path: localhost:8080/).
POST /{idCliente}/endereco Cria um novo endereco relacionado ao cliente dono do ID.
POST /{idCliente}/endereco-principal/{idEndereço} Busca cliente e endereco pelo ID de ambos, e define o endereço principal do cliente como o endereço do id passado como parametro, caso não exista o ID do endereco na lista de endereços do cliente retorna uma excecao personalizada, impedindo que o cliente altere informações de outro cliente.
PUT /clientes/{id} Atualiza as informações de um cliente específico, usando como parametros as informações passadas no corpo da requisição(pode ser atualizado um ou mais endereço usando a mesma função)
DELETE /{id} Deleta um cliente específico
DELETE /enderecos/{id} Deleta um endereço específico
DELETE /{idCliente}/delete-endereco/{idEndereço} Deleta o endereço específico apenas se ele estiver na lista de endereços do cliente passado como ID