O projeto é uma API backend de fast-food, a API conta com todos os métodos necessários para fazer o gerenciamento de fastfood, a documentação conta com o DDD no Miro do projeto, instruções de uso e mapeamento de endpoints. O projeto conta com arquitetura Hexagonal, tecnologia Java, utilizando Spring, Hibernate, Maven, JDBC entre outros frameworks, MySQL para banco de dados e Docker para conteinerização.
- Clone este repositório.
- Dentro do repósitorio food_techchallenge, importe o projeto na sua IDE de preferência.
- Rode os comandos abaixo:
- mvn clean install
- docker compose up
Endpoint: /api/food_techchallenge/users
Método: POST
Description: Método responsável por salvar usuários.
Request Example:
{
"nome":"Gabriel Freitas",
"cpf": "222.233.123-19",
"email": "gf@gmail.com"
}
Response Example:
{
"id": 9,
"nome": "Gabriel Freitas",
"cpf": "222.233.123-19",
"email": "gf@gmail.com"
}
Endpoint: /api/food_techchallenge/users/${id}
Método: GET
Description: Método responsável por buscar usuários pelo ID do banco de dados.
Request Example:
Path parameter
Response Example:
{
"id": 9,
"nome": "Gabriel Freitas",
"cpf": "222.233.123-19",
"email": "gf@gmail.com"
}
Endpoint: /api/food_techchallenge/users/cpf/${cpf}
Método: GET
Description: Método responsável por buscar usuários pelo CPF.
Request Example:
Path parameter
Response Example:
{
"id": 11,
"nome": "Gabriel Freitas",
"cpf": "777.233.123-19",
"email": "gf@gmail.com"
}
Endpoint: /api/food_techchallenge/users/${id}
Método: DELETE
Description: Método responsável por deletar usuários pelo ID do banco de dados.
Request Example:
Path parameter
Response Example:
Usuário 6 deletado com sucesso.
Endpoint: /api/food_techchallenge/produtos
Método: POST
Description: Método responsável por salvar produtos.
Request Example:
{
"nome": "X-Salada",
"descricao": "Hamburguer com alface e tomate",
"preco": 14.50,
"categoriaId": 1
}
Response Example:
{
"id": 1,
"nome": "X-Salada",
"descricao": "Hamburguer com alface e tomate",
"preco": 14.5,
"categoria": {
"id": 1,
"descricao": "Lanche"
}
}
Endpoint: /api/food_techchallenge/produtos/${id}
Método: PUT
Description: Método responsável por alterar produtos.
Request Example:
{
"nome": "Lanche Final Editado",
"descricao": "Teste de edição final",
"preco": 14.50,
"categoriaId": 1
}
Response Example:
{
"id": 1,
"nome": "Lanche Final Editado",
"descricao": "Teste de edição final",
"preco": 14.5,
"categoria": {
"id": 1,
"descricao": "Lanche"
}
}
Endpoint: /api/food_techchallenge/produtos/${id}
Método: GET
Description: Método responsável por buscar produtos pelo ID do banco de dados.
Request Example:
Path parameter
Response Example:
{
"id": 1,
"nome": "Lanche Final Editado",
"descricao": "Teste de edição final",
"preco": 14.5,
"categoria": {
"id": 1,
"descricao": "Lanche"
}
}
Endpoint: /api/food_techchallenge/produtos/categoria/Lanche
Método: GET
Description: Método responsável por buscar produtos pela sua categoria, sendo elas: Lanche; Acompanhamento; Bebida; Sobremesa.
Request Example:
Path parameter
Response Example:
{
"id": 1,
"nome": "Lanche Final Editado",
"descricao": "Teste de edição final",
"preco": 14.5,
"categoria": {
"id": 1,
"descricao": "Lanche"
}
}
Endpoint: /api/food_techchallenge/produtos/${id}
Método: DELETE
Description: Método responsável por deletar produto pelo ID do banco de dados.
Request Example:
Path parameter
Response Example:
200 ok
Endpoint: /api/food_techchallenge/pedidos
Método: POST
Description: Método responsável por criar produtos.
Request Example:
{
"userId": 12,
"produtosIds": [3,3,3]
}
Response Example:
{
"id": 1,
"user": {
"id": 12,
"nome": "Gabriel Freitas",
"cpf": "777.233.123-19",
"email": "gf@gmail.com"
},
"datapedido": "2023-10-30T23:24:25.7370168",
"total": 43.5,
"orderStatus": "RECEIVED"
}
Endpoint: /api/food_techchallenge/pedidos/status/RECEIVED
Método: GET
Description: Método responsável por listar produtos em determinados status, sendo eles: RECEIVED; IN_PREPARATION; READY; COMPLETED.
Request Example:
Path parameter
Response Example:
[
{
"id": 2,
"user": {
"id": 12,
"nome": "Gabriel Freitas",
"cpf": "777.233.123-19",
"email": "gf@gmail.com"
},
"datapedido": "2023-10-31T20:37:28.923042",
"total": 43.5,
"orderStatus": "RECEIVED",
"produtos": [
{
"id": 3,
"nome": "X-Salada",
"descricao": "Hamburguer com alface e tomate",
"preco": 14.5,
"categoria": {
"id": 1,
"descricao": ""
}
},
{
"id": 3,
"nome": "X-Salada",
"descricao": "Hamburguer com alface e tomate",
"preco": 14.5,
"categoria": {
"id": 1,
"descricao": ""
}
},
{
"id": 3,
"nome": "X-Salada",
"descricao": "Hamburguer com alface e tomate",
"preco": 14.5,
"categoria": {
"id": 1,
"descricao": ""
}
}
]
}
]
Endpoint: /api/food_techchallenge/pedidos/${id}
Método: PUT
Description: Método responsável por avançar o status do pedido desejado, sendo eles: RECEIVED; IN_PREPARATION; READY; COMPLETED.
Request Example:
Path parameter
Response Example:
{
"id": 1,
"user": {
"id": 12,
"nome": "Gabriel Freitas",
"cpf": "777.233.123-19",
"email": "gf@gmail.com"
},
"datapedido": "2023-10-30T23:24:25.737017",
"total": 43.5,
"orderStatus": "COMPLETED"
}