Skip to content

vanessadantas/poc-builders

Repository files navigation

#API responsável pelo cadastro de cliente

Banco de dados

Para subir o banco de dados é usado um docker file que se encontra dentro da estrutura da aplicação. Para subir o postgres, é necessário rodar o comando "docker-compose up" no terminal, dentro do diretório docker. No caminho: cliente/src/main/docker.

API

Dentro do diretório raiz da aplicação, "builders/cliente" rodar o comando: "mvn spring-boot:run".

Para verificar se a API está no ar, acessar o swagger no link: " http://localhost:8080/swagger-ui/#/ "

Testes

Dentro do diretório raiz encontra-se o arquivo " builders-cliente.postman_collection.json " para importar no postman.

Há um diretório "test/resources/exemplo" e dentro uma imagem para teste unitário de cadastro de foto do cliente.

##Descrição simplificada da API

  1. Todas as classes de domínio estão no diretório "br.com.cadastro.cliente.domain". A classe "Cliente" é a classe de modelo princial da API, as outras classes de modelo são complementações dos dados do cliente. Nessa classe encontrasse mapeamentos de persistência do framework JPA;

    1.1- A validação com a anotação @NotNull na data de nascimento é para garantir o requisito: "cada elemento retornado pela api de clientes informe a idade", assim não deixando um cliente ser cadastrado sem a data de nascimento.

    1.2- As enumerations de documentos e genero garantem que o cliente só vai ser cadastrado com os tipos definidos em cada enum.

    1.3- No atributo foto da classe cliente é armazenado o caminho do file system onde a foto foi gravada.

    1.4- Foi escolhido um mapa de documentos na classe cliente, para garantir a correspondência entre o numero e o tipo.

    1.5- O atributo telefone foi mapeado com: um cliente pode ter vários telefones (@OneToMany).

    1.6- Já o atributo endereco, foi mapeado como @Embedded, pois um cliente não precisa cadastrar mais de um endereço e assim também não é necessária a criação de uma tabela específica só para o armazenamento do endereço.

  2. A classe Endereco foi mapeada apenas com @Embeddable, para indicar que ela é parte (continuação) dos atributos da classe Cliente.

  3. A classe Telefone define um mapeamento ManyToOne com cliente. O mapeamento bidirecional evita que seja criada uma tabela de associação e otimiza as consultas no banco de dados.

  4. A classe CustomGlobalExceptionHandler faz a interceptação dos erros do controller. Foi criada apenas uma classe de tratamento de exceção específica de "not found" (ResourceNotFoundException), não foi encontrado no requisito da API a necessidade de se criar uma classe genérica para o tratamento de várias exceções ou outras classes específicas.

  5. Foi criado um clienteDTO para retornar apenas parte das informações do cliente na busca paginada, não sendo necessario retornar todas as informações, caso necessite das informações completas, fazer a busca pelo id do cliente.

  6. A classe SpringFoxConfig configura o SWAGGER_2.

  7. Há duas classes para exemplificar os teste, uma testa um método da API e outra um método do serviço.

Algumas outras informações também encontradas no SWAGGER: http://localhost:8080/swagger-ui/#/ .

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages