Skip to content

octavioduarte/Brain

Repository files navigation

Executando o projeto:

1º Primeiramente instale as dependêncis com:

 npm i

2º 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 Windows

4º Faça o build do projeto com o comando:

  npm run build

5º Para que o ORM (prisma) faça a conexão inicial com o banco é necessário executar:

  npx prisma generate

6º Por último para startar o projeto na porta 3000, execute o comando

  npm run dev

Se 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.

Para cadastrar um novo produtor

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
				}
			]
		}
	]
}'

Para ativar ou inativar um produtor (exclusão lógica)

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
}'

Para carregar as métricas

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
		}
	}
}

About

A simple API using Node, Express, Typescript, Prisma, Joi and PostgreSQL.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors