Um servidor backend escrito em nodejs, para consulta de CPFs.
Neste sistema poderá consultar a situação de um cpf e adicionar ou remover um cpf de uma blacklist. Ao solicitar a remoção do cpf da blacklist, é realizado um exclusão lógica para realização de estatisticas do mesmo. Poderá também consultar a data que o servidor foi iniciado, a quantidade de consultas realizadas neste periodo e a quantidade total de cpfs na blacklist.
Este projeto utiliza a versão 8.16.0 do
O sistema utiliza:
- nodejs v8.16.0
- npm v6.4.1
- yarn v1.16.0
- docker v18.09.6
- docker-compose v1.24.0
Para iniciar o projeto em desenvolvimento, basta instalar o docker e docker-compose, e executar o comando
docker-compose up -d
Já existe um container do docker para executar os testes, mas caso precise ou queira executar local seria:
yarn test
para exibir os logs do ambiente de teste, basta executar o seguinte comando após iniciar o docker:
docker logs -f cpf-backend_test_1
para exibir os logs da aplicação, basta executar o seguinte comando após iniciar o docker:
docker logs -f cpf-backend_app_1
A aplicação utiliza o banco mongoDB, não precisa de ser criado. Tendo ele iniciado, basta utilizar.
Na aplicação foi construido via docker, então basta executar o comando do docker compose que ele se inicializará.
Após executar o docker, inicializará o servidor de aplicação, contendo os seguintes endpoints:
- GET /status: Uptime do servidor.
Retorna:
{ "startedAt": "", "queries": 0, "blacklists": 0 }
Exibe o status do servidor, ondestartedAt
é o momento que o servidor foi iniciado,queries
é quantidade de consultas ao status de cpf foi realidados apartir do momento que o servidor foi iniciado eblacklists
é a quantidade de cpfs que está na blacklist até o momento. Ex: { "startedAt": "2019-06-23T23:52:09.387Z", "queries": 0, "blacklists": 1 }
- GET /cpf/status: recebe via
query
o parâmetrocpf
que será usado para consultar o status do cpf. Retorna:- FREE se não estiver na blacklist
- BLOCK se estiver na blacklist
{ message: '', fields: [ '' ]}
se ocorreu algum erro de processamento, ondemessage
é uma mensagem generica efields
é um array de mensagem relacionada aos campos validados. Ex: { "message": "One or more validation errors occurred:", "fields": [ ""cpf" is not allowed to be empty" ] }
- POST /cpf/add: recebe via
body
o paramentrocpf
que será usado para adicionar o cpf na blacklist. Retorna:{ "cpf": "", "removedAt": null, : "createdAt": "", "updatedAt": "" }
sempre que um cpf é adicionando na blacklist. Exemplo: { "cpf": "638.174.677-70", "removedAt": null, "createdAt": "2019-06-23T19:43:54.103Z", "updatedAt": "2019-06-23T19:43:54.103Z" }{ message: '', fields: [ '' ]}
se ocorreu algum erro de processamento, ondemessage
é uma mensagem generica efields
é um array de mensagem relacionada aos campos validados. Ex: { "message": "One or more validation errors occurred:", "fields": [ ""cpf" was added in blacklist" ] }
- DELETE /cpf/remove: recebe via
body
o paramentrocpf
que será usado para adicionar o cpf na blacklist. Retorna:{ "cpf": "", "removedAt": null, : "createdAt": "", "updatedAt": "" }
sempre que um cpf é removido da blacklist. Exemplo: { "cpf": "638.174.677-70", "removedAt": "2019-06-23T19:48:31.465Z", "createdAt": "2019-06-23T19:43:54.103Z", "updatedAt": "2019-06-23T19:48:31.465Z" }{ message: '', fields: [ '' ]}
se ocorreu algum erro de processamento, ondemessage
é uma mensagem generica efields
é um array de mensagem relacionada aos campos validados. Ex: { "message": "One or more validation errors occurred:", "fields": [ ""cpf" was not added in blacklist" ] }