O LIBRARY-API é um sistema backend desenvolvido em Go para gerenciar o catálogo de uma livraria. O sistema permite adicionar, atualizar, listar e remover livros, autores e empréstimos. Ele suporta SQLite e PostgreSQL, oferece uma API RESTful completa, CLI para comandos e está containerizado com Docker.
- Livros: CRUD completo, busca paginada com filtros (gênero, autor, ano)
- Autores: CRUD completo, listar livros por autor
- Empréstimos: Registrar (com verificação de disponibilidade), retornar e listar atrasados
- CLI: Comandos
search, simulate, authors, loans
- Logging: Structured JSON logging com
slog
- Graceful shutdown: Finalização limpa do servidor HTTP
- Health check: Endpoint
/health para monitoramento
- CORS: Suporte para requisições cross-origin
- Validação: Validação de entrada para livros, autores e empréstimos
- Go instalado localmente
- SQLite3 (padrão) ou Docker com PostgreSQL
github.com/mattn/go-sqlite3
github.com/jackc/pgx/v5
go mod tidy
go run ./cmd/gobook
docker-compose up --build
| Variável |
Padrão |
Descrição |
PORT |
8080 |
Porta do servidor |
DB_DRIVER |
sqlite3 |
sqlite3 ou postgres |
DB_PATH |
./books.db |
Caminho do SQLite |
DB_URL |
(vazio) |
Connection string do PostgreSQL |
LOG_LEVEL |
info |
info ou debug |
export DB_DRIVER=postgres
export DB_URL=postgres://user:pass@localhost:5432/library?sslmode=disable
go run ./cmd/gobook
go run ./cmd/gobook search "Go"
go run ./cmd/gobook simulate 1 2 3
go run ./cmd/gobook authors list
go run ./cmd/gobook authors create "George Orwell" "Bio" 1903
go run ./cmd/gobook authors delete 1
go run ./cmd/gobook loans list
go run ./cmd/gobook loans overdue
go run ./cmd/gobook loans return 1
| Método |
Endpoint |
Descrição |
| GET |
/books?page=1&pageSize=10&genre=Fiction&authorId=1&publicationYear=2020 |
Listar com filtros e paginação |
| POST |
/books |
Criar livro |
| GET |
/books/{id} |
Buscar por ID |
| PUT |
/books/{id} |
Atualizar |
| DELETE |
/books/{id} |
Remover |
| Método |
Endpoint |
Descrição |
| GET |
/authors |
Listar |
| POST |
/authors |
Criar |
| GET |
/authors/{id} |
Buscar por ID |
| PUT |
/authors/{id} |
Atualizar |
| DELETE |
/authors/{id} |
Remover |
| GET |
/authors/{id}/books |
Livros do autor |
| Método |
Endpoint |
Descrição |
| GET |
/loans |
Listar |
| POST |
/loans |
Criar empréstimo |
| GET |
/loans/{id} |
Buscar por ID |
| POST |
/loans/{id}/return |
Devolver livro |
| GET |
/loans/overdue |
Empréstimos atrasados |
| Método |
Endpoint |
Descrição |
| GET |
/health |
Status do sistema e conectividade com banco |
| Método |
Endpoint |
Descrição |
| GET |
/swagger/index.html |
Interface interativa da documentação da API |
Use o arquivo test.http para testar os endpoints da API.
Para gerar a documentação Swagger, instale o swag CLI e rode:
go install github.com/swaggo/swag/cmd/swag@latest
swag init -g cmd/gobook/main.go
Após gerar, acesse http://localhost:8080/swagger/index.html para explorar a API interativamente.
Você também pode usar o Makefile: