Uma API robusta para gerenciamento de pedidos, construída com FastAPI, SQLAlchemy e Alembic. Este projeto oferece suporte a autenticação JWT, controle de usuários e um fluxo completo de pedidos com múltiplos itens.
- Autenticação: Sistema de login seguro usando OAuth2 com tokens JWT.
- Gerenciamento de Usuários: Cadastro, ativação e controle de privilégios administrativos.
- Sistema de Pedidos:
- Criação de pedidos vinculados a usuários.
- Adição de múltiplos itens a um único pedido (sabor, tamanho, quantidade).
- Cálculo automático de preço total.
- Gestão de status do pedido (PENDENTE, FINALIZADO, etc.).
- Banco de Dados: Integração com SQLite via SQLAlchemy.
- Migrações: Controle de versão do banco de dados com Alembic.
fast_api/
├── alembic/ # Scripts de migração do banco de dados
├── connection/ # Gerenciamento de conexão com o DB
├── database/ # Arquivo do banco de dados SQLite
├── models/ # Modelos SQLAlchemy
│ └── models.py # Definição de Usuário, Pedido e ItemPedido
├── routes/ # Rotas da API divididas por contexto
│ ├── auth/ # Rotas de autenticação
│ └── orders/ # Rotas de gerenciamento de pedidos
├── schemas.py # Esquemas de validação Pydantic
├── main.py # Ponto de entrada da aplicação
├── dependencies.py # Dependências injetáveis (DB, Auth)
├── requirements.txt # Dependências do projeto
└── alembic.ini # Configuração do Alembic
- Python 3.8+
- venv (recomendado)
- Clone o repositório ou baixe os arquivos.
- Crie e ative um ambiente virtual:
python -m venv venv # No Windows: .\venv\Scripts\activate
- Instale as dependências:
pip install -r requirements.txt
- Configure o arquivo
.envna raiz do projeto:SECRET_KEY=sua_chave_secreta_aqui ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=30
Caso precise atualizar o banco de dados:
- Gere uma nova migração:
alembic revision --autogenerate -m "descrição das mudanças" - Aplique a migração:
alembic upgrade head
Para iniciar o servidor de desenvolvimento com recarregamento automático:
uvicorn main:app --reloadAcesse a documentação interativa da API em:
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
POST /auth/create_account: Cadastro de contaPOST /auth/login: Login do usuárioGET /auth/refresh_token: Gera novo access tokenPOST /auth/login_oauth: Login para obtenção de token JWT.
GET /orders/all: Pegar todos os pedidos cadastradosGET /orders/order/view_order_user: Listagem de pedidos do usuário autenticado.GET /orders/order/{order_id}: Lista o pedido conforme o id delePOST /orders/create_order: Criar pedidoPOST /orders/order/cancel/{order_id}: Mudar o status do pedido para CANCELADOPOST /orders/finalize/{order_id}: Mudar o status do pedido para FINALIZADOPOST /orders/order/add_item_to_order/{order_id}: Adiciona itens ao pedidoDELETE /orders/order/remove_item/{item_order_id}: Deleta itens do pedido
