Giter VIP home page Giter VIP logo

agrix-fase-a's Introduction

Agrix Fase A

API de controle de fazendas e plantações, utilizando Spring Boot, Spring Boot Web, Spring Boot Starter Actuator, Spring Data JPA e MySQL Connector-J


Premissa do Projeto

Maria e João são pessoas empreendedoras que estão muito preocupadas com os impactos ambientais e sociais dos nossos processos agrícolas. Por isso, decidiram criar a AgroTech, uma empresa especializada em tecnologias para melhorar a eficiência no cultivo de plantações. Isso visa reduzir o desperdício de recursos em geral e de alimentos em específico, fazendo um uso mais responsável da terra disponível para plantio.

O primeiro produto dessa empresa será o Agrix, um sistema que permitirá a gestão e o monitoramento das fazendas participantes. Esse produto será desenvolvido em fases.

Neste projeto você deverá desenvolver uma aplicação Spring Boot com algumas funcionalidades iniciais, e que servirá de base para as próximas fases.


Habilidades desenvolvidas

  • Aplicar o conhecimento do ecossistema Spring para criar rotas da API.
  • Aplicar a injeção de dependência para conectar as camadas de controle, serviço e persistência.
  • Utilizar o Spring Data JPA para implementar entidades e repositórios para a persistência em banco de dados.
  • Implementar gerenciamento de erros no Spring Web.
  • Criar o Dockerfile multiestágio para configurar a aplicação para execução no Docker.

Instalação

  1. Clone o repositório

    • Use o comando: git clone [email protected]:yurioneix/agrix-fase-a.git
    • Entre na pasta do repositório que você acabou de clonar:
      • cd agrix-fase-a
  2. Instale as dependências

    • mvn install -DskipTests
  3. Suba os containers Docker

    • docker-compose up -d

Endpoints

  • POST /farms
Cadastra uma nova fazenda
  • Exemplo de requisição:

      {
        "name": "Fazendinha",
        "size": 5
      }
  • Exemplo de resposta com status 200:

      {
        "id": 1,
        "name": "Fazendinha",
        "size": 5
      }

  • GET /farms
Retorna todas as fazendas cadastradas
  • Exemplo de resposta com status 200:

      [
        {
          "id": 1,
          "name": "Fazendinha",
          "size": 5.0
        },
        {
          "id": 2,
          "name": "Fazenda do Júlio",
          "size": 2.5
        }
      ]
  • Caso não exista uma fazenda com esse id, a rota retorna o status HTTP 404 com a mensagem Fazenda não encontrada! no corpo da resposta.


  • GET /farms/{id}
Retorna uma fazenda pelo seu id
  • Exemplo de resposta com status 200 para a rota /farms/3 (supondo que exista uma fazenda com id = 3):

      {
        "id": 3,
        "name": "My Cabbages!",
        "size": 3.49
      }

  • POST /farms/{farmId}/crops
Associa uma plantação à uma fazenda, através do id da fazenda
  • Exemplo de requisição na rota /farms/1/crops com status 201 (supondo que exista uma fazenda com id = 1):

      {
        "name": "Couve-flor",
        "plantedArea": 5.43
      }
  • Exemplo de resposta:

      {
        "id": 1,
        "name": "Couve-flor",
        "plantedArea": 5.43,
        "farmId": 1
      }
  • Caso não exista uma fazenda com o id passado, a rota deve retornar o status HTTP 404 com a mensagem Fazenda não encontrada! no corpo da resposta.


  • GET /farms/{farmId}/crops
Retorna uma plantação pelo id da fazenda em que ela está associada
  • Exemplo de resposta para a rota /farms/1/crops com status 200 (supondo que exista uma fazenda com id = 1):

      [
        {
          "id": 1,
          "name": "Couve-flor",
          "plantedArea": 5.43,
          "farmId": 1
        },
        {
          "id": 2,
          "name": "Alface",
          "plantedArea": 21.3,
          "farmId": 1
        }
      ]
  • Caso não exista uma fazenda com esse id, a rota retornar o status HTTP 404 com a mensagem Fazenda não encontrada! no corpo da resposta.


  • GET /crops
Retorna todas as plantações cadastradas
  • Exemplo de resposta da requisição, com status HTTP 200:
      [
        {
          "id": 1,
          "name": "Couve-flor",
          "plantedArea": 5.43,
          "farmId": 1
        },
        {
          "id": 2,
          "name": "Alface",
          "plantedArea": 21.3,
          "farmId": 1
        },
        {
          "id": 3,
          "name": "Tomate",
          "plantedArea": 1.9,
          "farmId": 2
        }
      ]

  • GET /crops/{id}
Retorna uma plantação pelo seu id
  • Exemplo de resposta para a rota /crops/3 (supondo que exista uma plantação com id = 3:
  {
    "id": 3,
    "name": "Tomate",
    "plantedArea": 1.9,
    "farmId": 2
  }
  • Caso não exista uma plantação com o id passado, a rota deve retornar o status HTTP 404 com a mensagem Plantação não encontrada! no corpo da resposta.

Pastas/arquivos desenvolvidos por mim

  src/main/java/com.betrybe.agrix.controller
  src/main/java/com.betrybe.agrix.model
  src/main/java/com.betrybe.agrix.service
  src/main/java/com.betrybe.agrix.util

agrix-fase-a's People

Contributors

yurioneix avatar trybe-tech-ops avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.