Agrix é um sistema que visa melhorar a eficiência no cultivo de plantações, reduzindo o desperdício de recursos e promovendo práticas agrícolas mais sustentáveis.
O projeto Agrix será desenvolvido em fases, e atualmente (fase C) inclui as seguintes funcionalidades e rotas:
-
Cadastrar Fazendas:
- Rota POST
/farms
para cadastrar fazendas.
- Rota POST
-
Listar Fazendas:
- Rota GET
/farms
para listar todas as fazendas cadastradas.
- Rota GET
-
Detalhes de Fazenda:
- Rota GET
/farms/{id}
para obter informações sobre uma fazenda específica.
- Rota GET
-
Cadastrar Plantações:
- Rota POST
/farms/{farmId}/crops
para criar plantações em uma fazenda.
- Rota POST
-
Listar Plantações de Fazenda:
- Rota GET
/farms/{farmId}/crops
para listar as plantações de uma fazenda.
- Rota GET
-
Listar Todas as Plantações:
- Rota GET
/crops
para listar todas as plantações cadastradas.
- Rota GET
-
Detalhes de Plantação:
- Rota GET
/crops/{id}
para obter informações sobre uma plantação específica.
- Rota GET
-
Ajuste da rota POST /farms/{farmId}/crops para utilizar datas:
- Ajuste da rota POST
/farms/{farmId}/crops
(para incluir dois atributos novos):
- Ajuste da rota POST
- plantedDate, representando a data em que a plantação foi semeada.
- harvestDate, representando a data em qua a plantação foi ou está prevista para ser colhida.
-
Ajuste da rota GET /farms/{farmId}/crops para utilizar datas (plantedDate e harvestDate):
- Rota GET
/farms/{farmId}/crops
agora traz plantedDate e harvestDate.
- Rota GET
-
Ajuste da rota GET /crops para utilizar datas (plantedDate e harvestDate):
- Rota GET
/crops
agora traz plantedDate e harvestDate.
- Ajuste da rota GET /crops/{id} para utilizar datas (plantedDate e harvestDate):
- Rota GET
/crops/{id}
agora traz plantedDate e harvestDate.
- Rota GET /crops/search para busca de plantações:
- Rota GET
/crops/search
que recebe dois parâmetros por query string para busca (start: data de início e end: data de fim). - Retorna uma lista com as plantações nas quais o campo harvestDate esteja entre as data de início e de fim.
- Rota POST /fertilizers:
- Rota POST
/fertilizers
que recebe via corpo do POST os dados de um fertilizante. - Deve salvar um novo fertilizante a partir dos dados recebidos.
- Rota GET /fertilizers:
- Rota GET
/fertilizers
que retorna uma lista de todos os fertilizantes cadastrados.
- Rota GET /fertilizers/{id}:
- Rota GET
/fertilizers/{id}
que recebe o id de um fertilizante pelo caminho da rota. - Caso exista o fertilizante com o id recebido, deve retornar seus dados, incluindo seu id.
- Rota POST /crops/{cropId}/fertilizers/{fertilizerId}:
- Rota POST
/crops/{cropId}/fertilizers/{fertilizerId}
que faz a associação entre uma plantação e um fertilizante.
- Rota GET /crops/{cropId}/fertilizers:
- Rota GET
/crops/{cropId}/fertilizers
que lista os fertilizante associados a uma plantação.
- Rota POST /persons:
- Rota POST
/persons
para salvar novas pessoas da equipe de trabalho no banco de dados.
-
Foi adicionada autenticação no projeto, incluindo uma rota para login que retorna um JWT:
- Foi feita a configuração do Spring Security e implementou-se a autenticação por usuário e senha.
-
Limitação de acesso às rotas GET /farms, GET /crops e GET /fertilizers:
- Foi limitado o acesso à rota GET /farms para que apenas uma pessoa autenticada com role USER, MANAGER ou ADMIN possa acessar.
- Foi imitado o acesso à rota GET /crops para que apenas uma pessoa autenticada com role MANAGER ou ADMIN possa acessar.
- Foi limitado o acesso à rota GET /fertilizers para que apenas uma pessoa autenticada com role ADMIN possa acessar.
O projeto Agrix utiliza as seguintes tecnologias e frameworks:
-
Spring Boot: Para criar a aplicação e disponibilizar as APIs.
-
Spring Data JPA: Para a camada de persistência e acesso ao banco de dados.
-
Spring Security: Para implementar autenticação e autorização.
-
Docker: Para configurar a aplicação para execução em contêineres Docker.
# Clone ou baixe o repositório
git clone git@github.com:LarissaSimoes/projeto-agrix-java-fase-c.git
# Entre no diretório
cd project-agrix-java-fase-c
# Instale as dependências
mvn install -DskipTests
# Execute a aplicação
Executar a Classe Principal (AgrixApplication.java)