close
Skip to content

ThiagoCardoso4/Biblioteca-em-FastAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Biblioteca API

API REST para gerenciamento de biblioteca com autenticação JWT, controle de livros/autores/clientes e fluxo de empréstimos.

Tecnologias

  • Python 3.12+
  • FastAPI
  • SQLAlchemy
  • SQLite
  • Pydantic
  • Uvicorn

Estrutura do projeto

.
├── api/           # Rotas HTTP
├── core/          # Configuração de banco e segurança
├── models/        # Modelos SQLAlchemy
├── repository/    # Acesso a dados (CRUD)
├── schemas/       # Schemas Pydantic
├── services/      # Regras de negócio (empréstimo)
├── main.py        # Ponto de entrada da aplicação
└── requiriments.txt

Requisitos

  • Python 3.12 ou superior
  • pip

Instalação

python -m venv .venv

No PowerShell:

.venv\Scripts\Activate.ps1

Instalar dependências:

pip install -r requiriments.txt

Executando a API

uvicorn main:app --reload

Aplicação: http://127.0.0.1:8000
Swagger UI: http://127.0.0.1:8000/docs
ReDoc: http://127.0.0.1:8000/redoc

Banco de dados

  • O projeto usa SQLite com arquivo local database.db.
  • As tabelas são criadas automaticamente ao iniciar (Base.metadata.create_all(...) em main.py).
  • String de conexão atual: sqlite:///./database.db.

Autenticação

As rotas de domínio (/book, /author, /client, /loan) exigem token Bearer.

1) Registrar usuário

POST /auth/register

Exemplo:

{
  "name": "Admin",
  "email": "admin@biblioteca.com",
  "password": "123456"
}

2) Fazer login

POST /auth/login usando application/x-www-form-urlencoded:

  • username = e-mail
  • password = senha

Resposta esperada:

{
  "access_token": "jwt-token",
  "token_type": "bearer"
}

3) Enviar token nas requisições protegidas

Authorization: Bearer <access_token>

Rotas principais

Auth

  • POST /auth/register
  • POST /auth/login

Books

  • POST /book/
  • GET /book/
  • GET /book/{book_id}
  • PATCH /book/{book_id}
  • DELETE /book/{book_id}

Payload de criação:

{
  "title": "Clean Code",
  "pages": 464,
  "stock": 5,
  "author_ids": [1, 2]
}

Authors

  • POST /author/
  • GET /author/
  • GET /author/{author_id}
  • PATCH /author/{author_id}
  • DELETE /author/{author_id}

Clients

  • POST /client/
  • GET /client/
  • PATCH /client/{client_id}
  • DELETE /client/{client_id}

Loans

  • POST /loan/
  • GET /loan/
  • GET /loan/{loan_id}
  • GET /loan/client/{client_id}
  • PATCH /loan/{loan_id} (finaliza empréstimo)
  • DELETE /loan/{loan_id}

Payload de criação:

{
  "client_id": 1,
  "book_id": 2,
  "active": true,
  "return_date": "2026-03-20",
  "fine_amount": 0
}

Regras de negócio de empréstimo

  • Limite de até 10 empréstimos por cliente.
  • Não permite empréstimo quando o estoque do livro é 0.
  • Ao criar empréstimo, o estoque do livro diminui em 1.
  • Ao finalizar empréstimo, o estoque aumenta em 1.
  • Se finalizar após return_date, o empréstimo recebe is_late = true.

Observações

  • CORS está liberado para qualquer origem (*).
  • O arquivo de dependências está nomeado como requiriments.txt.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages