Esse é um teste para que possamos avaliar seus conhecimentos técnicos em Java e qualidade do código. O mais importante não é terminá-lo por completo, mas a qualidade do que foi feito :)
Criar um cadastro de usuários com os seguintes campos:
- Nome Composto (Obrigatório)
- CPF (Obrigatório e único)
- Endereço (Obrigatório)
- Telefone (Opcional)
- Email (Obrigatório)
Deve ser possível cadastrar, editar, buscar ou excluir um usuário. Com exceção da funcionalidade de cadastro, o usuário deve ser identificado por chave primária autogerada pela base de dados.
Dado o banco de dados de produtos fornecido, criar um endpoint para que seja possível listá-los
Criar um endpoint para que seja possível vincular um usuário já cadastrado a um dos produtos disponíveis. Ao realizar a vinculação, gerar um número de mídia único que represente o vínculo entre usuário e produto. Caso seja feita a combinação de um usuário e produtos já previamente vinculados, cancelar a anterior, porém manter os dados no banco para fim de histórico.
- Seguir o padrão RESTFUL
- Utilizar as funcionalidades do Java 8 quando possível (Streams, lambda, method reference)
- Listagem de usuários para um determinado tipo de produto. Caso nenhum produto seja espeficado, listar todos. Aqui não devem ser listados os produtos de determinado usuário que não estejam ativos.
- Lista de produtos que um determinado usuário já possui ou possuiu, com status
- Testes unitários
- Clean Code
- Docker e microsserviços
- Documentação Swagger