Skip to content

TheJoaoVitorio/fast_api

Repository files navigation

FastAPI Ordering System

FastAPI

Test Package version

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.

🚀 Funcionalidades

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

🛠️ Tecnologias Utilizadas

📁 Estrutura do Projeto

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

⚙️ Configuração e Instalação

Pré-requisitos

  • Python 3.8+
  • venv (recomendado)

Instalação

  1. Clone o repositório ou baixe os arquivos.
  2. Crie e ative um ambiente virtual:
    python -m venv venv
    # No Windows:
    .\venv\Scripts\activate
  3. Instale as dependências:
    pip install -r requirements.txt
  4. Configure o arquivo .env na raiz do projeto:
    SECRET_KEY=sua_chave_secreta_aqui
    ALGORITHM=HS256
    ACCESS_TOKEN_EXPIRE_MINUTES=30

🗄️ Migrações de Banco de Dados

Caso precise atualizar o banco de dados:

  1. Gere uma nova migração:
    alembic revision --autogenerate -m "descrição das mudanças"
  2. Aplique a migração:
    alembic upgrade head

🏁 Como Executar

Para iniciar o servidor de desenvolvimento com recarregamento automático:

uvicorn main:app --reload

Acesse a documentação interativa da API em:

📡 Endpoints Principais

Autenticação

  • POST /auth/create_account: Cadastro de conta
  • POST /auth/login: Login do usuário
  • GET /auth/refresh_token: Gera novo access token
  • POST /auth/login_oauth: Login para obtenção de token JWT.

Pedidos

  • GET /orders/all: Pegar todos os pedidos cadastrados
  • GET /orders/order/view_order_user: Listagem de pedidos do usuário autenticado.
  • GET /orders/order/{order_id}: Lista o pedido conforme o id dele
  • POST /orders/create_order: Criar pedido
  • POST /orders/order/cancel/{order_id}: Mudar o status do pedido para CANCELADO
  • POST /orders/finalize/{order_id}: Mudar o status do pedido para FINALIZADO
  • POST /orders/order/add_item_to_order/{order_id}: Adiciona itens ao pedido
  • DELETE /orders/order/remove_item/{item_order_id}: Deleta itens do pedido

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published