pg-api-0.2.0 is not a library.
PG-API
Um driver PostgreSQL de alta performance via REST API, construído em Rust.
PG-API permite executar queries SQL, transações e gerenciar bancos de dados PostgreSQL através de uma API REST simples e segura, com autenticação via API keys, rate limiting e connection pooling.
✨ Funcionalidades
- 🔌 Query Execution - Execute queries SQL via HTTP POST
- 📦 Batch Operations - Múltiplas queries em uma única requisição
- 🔒 Transações - Suporte a transações ACID
- 🔑 Autenticação - API keys com controle de acesso granular
- ⏱️ Rate Limiting - Limitação de requisições por conta
- 🏊 Connection Pooling - Pool de conexões PostgreSQL eficiente
- 📊 Observabilidade - Métricas opcionais para OpenSearch
- 📖 OpenAPI - Documentação automática em
/docs
🚀 Quick Start
1. Instalação
# Clone o repositório
# Build do projeto
2. Configuração
# Crie a configuração de contas
# Configuração do servidor
3. Execute
# Modo desenvolvimento
# Modo produção
O servidor estará disponível em http://localhost:8580
📖 Documentação
- Quick Start Guide - Tutorial passo a passo
- API Reference - Documentação completa dos endpoints
- Observability Guide - Configuração de métricas
- Changelog - Histórico de versões
🛠️ Exemplo de Uso
cURL
# Health check
# Executar uma query
Python
=
# Executar query
=
Rust
use Client;
use json;
async
Veja mais exemplos em examples/.
📋 Endpoints Principais
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /health |
Health check |
| POST | /v1/query |
Executar query SQL |
| POST | /v1/batch |
Executar batch de queries |
| POST | /v1/transaction |
Executar transação |
| GET | /v1/databases |
Listar databases |
| GET | /v1/account |
Informações da conta |
| GET | /docs |
Documentação Swagger UI |
🏗️ Arquitetura
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Cliente │────▶│ Axum/HTTP │────▶│ Middleware │
│ (cURL/JS) │ │ Server │ │(Auth/Rate) │
└─────────────┘ └─────────────┘ └──────┬──────┘
│
┌─────────────────────┘
▼
┌─────────────────┐
│ Query Handler │
└────────┬────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Pool │ │ Batch │ │ Tx │
│ Manager │ │ Handler │ │ Handler │
└────┬────┘ └─────────┘ └─────────┘
│
▼
┌─────────┐
│PostgreSQL│
└─────────┘
⚙️ Configuração
Variáveis de Ambiente
# Servidor
APP__ADDR=127.0.0.1:8580
APP__LOG_LEVEL=info
# PostgreSQL
PG__MAX_CONNECTIONS=100
PG__POOL_SIZE=25
# Observabilidade (opcional)
OPENSEARCH_ENABLED=false
OPENSEARCH_API_URL=https://opensearch.example.com
OPENSEARCH_API_TOKEN=sk_live_xxxxx
🧪 Testes
# Rodar todos os testes
# Rodar com output detalhado
# Benchmarks
🤝 Contribuindo
- Fork o projeto
- Crie sua branch (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -am 'feat: nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
📄 Licença
Este projeto está licenciado sob a licença MIT - veja LICENSE.md para detalhes.
🔗 Links
- Repositório: https://gitlab.com/aerunti/pg-api
- Documentação API: http://localhost:8580/docs (quando rodando)
- OpenAPI Spec: http://localhost:8580/openapi.json