Executando o projeto:
1º Primeiramente instale as dependêncis com:
npm i2º Crie o o arquivo .env, com a variável DATABASE_URL com a string de conexão.
3º Caso não tenha o Nodemon instalado, execute o comando (se já tiver o pacote instalado, pule para o passo 4) :
npm install -g nodemon
#Esta função instala um pacote a nível global em sua máquina então precisa ser executada
#com o acesso de um administrador, usando sudo no linux ou executando o terminal como administrador no Windows4º Faça o build do projeto com o comando:
npm run build5º Para que o ORM (prisma) faça a conexão inicial com o banco é necessário executar:
npx prisma generate6º Por último para startar o projeto na porta 3000, execute o comando
npm run devSe tudo der certo você vai receber uma mensagem do Nodemon informando que o servidor está sendo executado, após isso você pode testar os endpoints.
Abaixo estão alguns curls que você pode executar, ou se preferir copiar e colar o conteúdo do arquivo Insomnia_2023-11-28.json no Insomnia.
curl --request POST \
--url http://localhost:3000/brain/producer \
--header 'Content-Type: application/json' \
--header 'User-Agent: insomnia/8.4.5' \
--data '{
"name": "Usuário 2",
"document": "09292678000",
"document_type": "CPF",
"farm": [
{
"name": "Fazenda Paraiba",
"zip_code": "64027660",
"area": 2500,
"arable_area": 1000,
"vegetation_area": 500,
"cultures": [
{
"id": 10,
"occupation_area": 500
}
]
}
]
}'
curl --request PATCH \
--url http://localhost:3000/brain/producer \
--header 'Content-Type: application/json' \
--header 'User-Agent: insomnia/8.4.5' \
--data '{
"document": "09292678000",
"document_type": "CPF",
"new_status": false
}'
curl --request GET \
--url http://localhost:3000/brain/metrics \
--header 'User-Agent: insomnia/8.4.5'
Rotas da aplicação:
Método: POST
Descrição: Regitrar novos produtores rurais com suas fazendas.
Cenários de validação:
- Verifica se o CPF ou CNPJ é válido (campo 'document').
- Verifica se o CPF ou CNPJ já está cadastrado na base.
- Verifica se o tipo de documento é válido (campo 'document_type') - Aceita CPF e CNPJ.
- Valida cada campo da request para garantir que as tipagens e os atributos estão corretos.
- Faz integração com a API da viacep para obter cidade e estado a partir do CEP.
- Cálculo das áreas da fazenda x cultura:
- Garante que a soma da área das culturas plantadas não supere a área da fazenda.
- Garante que a soma da área das culturas plantadas não supere a área agricultável.
- Garante que a soma da área agricutável com a área de vegetação não supera a área da fazenda.
Método: PATCH
Descrição: Altera o status de ativo do usuário.
Cenários de validação:
- Verifica se o CPF ou CNPJ é válido (campo 'document').
- Verifica se o CPF ou CNPJ existe na base.
- Verifica se o tipo de documento é válido (campo 'document_type') - Aceita CPF e CNPJ.
- Valida cada campo da request para garantir que as tipagens e os atributos estão corretos.
Obs: Uma vez que o status esteja inativado o usuário passa a não ser considerado nos demais fluxos da API.
Método: GET
Descrição: Carrega métricas dos dados cadastrados.
{
"farms_total" // total de fazendas cadastradas
"farms_total_area_in_hct" // soma da área das fazendas cadastradas
"farms_total_arable_area_in_hct" // soma da área agricutável das fazendas cadastradas
"farms_total_vegetation_area_in_hct" // soma da área de vegetação das fazendas cadastradas
"farms_total_by_state": {
"sp" // <-- sigla UF: {
"farms_total" // soma das fazendas vinculadas a um estado
"farms_total_area_in_hct" // soma da área das fazendas cadastradas do estado
}
},
"total_by_culture": {
"soja": {
"total_occupation_in_hct": // soma da área de ocupação da cultura
}
}
}