Módulo Postgres
O módulo Postgres fornece operações completas de banco de dados PostgreSQL com pool de conexões, cache de queries, suporte a SSL e operações em batch.
🚀 Funcionalidades
Características Principais
- ✅ Pool de conexões: Gerenciamento eficiente de conexões
- ✅ Cache de queries: Cache configurável para performance
- ✅ Suporte SSL: Múltiplos modos SSL (disable, prefer, require)
- ✅ Batch operations: Inserções em lote para alta performance
- ✅ Parâmetros seguros: Prevenção de SQL injection
- ✅ Observabilidade: Tracing completo com OpenTelemetry
📋 Configuração
Configuração Básica
modules:
- name: "db"
module: "postgres"
with:
host: "localhost"
port: 5432
user: "myuser"
password: "mypassword"
database: "mydb"
ssl_mode: "prefer"
max_pool_size: 20
cache_query: true
🔧 Parâmetros
Configuração (with)
host
(string): Hostname do servidor PostgreSQLport
(integer): Porta (padrão: 5432)user
(string): Nome de usuáriopassword
(string): Senhadatabase
(string): Nome do bancossl_mode
(enum): Modo SSL [disable, prefer, require]max_pool_size
(integer): Tamanho máximo do pool (padrão: 10)cache_query
(boolean): Cache de queries (padrão: true)
Entrada (input)
query
(string): Query SQLparams
(array): Parâmetros da querybatch
(boolean): Modo batchcache_query
(boolean): Cache específico da query
Saída (output)
result.rows
(array): Linhas retornadasresult.count
(integer): Número de linhasmessage
(string): Mensagem da operaçãostatus
(string): Status (success/failure)
💻 Exemplos de Uso
SELECT Básico
steps:
- name: "get_users"
use: "db"
input:
query: "SELECT id, name, email FROM users WHERE active = $1"
params: [true]
INSERT com Retorno
steps:
- name: "create_user"
use: "db"
input:
query: "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id"
params: ["João Silva", "joao@example.com"]
Batch Insert
steps:
- name: "batch_insert"
use: "db"
input:
query: "INSERT INTO logs (message, level, timestamp) VALUES ($1, $2, $3)"
batch: true
params: [
["Error 1", "ERROR", "2024-01-01T00:00:00Z"],
["Info 1", "INFO", "2024-01-01T00:01:00Z"],
["Debug 1", "DEBUG", "2024-01-01T00:02:00Z"]
]
🌐 Exemplo Completo
name: "user-management"
version: "1.0.0"
modules:
- name: "db"
module: "postgres"
with:
host: "localhost"
database: "users_db"
user: "app_user"
password: "secure_password"
ssl_mode: "require"
max_pool_size: 20
steps:
- name: "create_user"
use: "db"
input:
query: |
INSERT INTO users (name, email, created_at)
VALUES ($1, $2, NOW())
RETURNING id, name, email, created_at
params: ["{{ $name }}", "{{ $email }}"]
- name: "get_user_stats"
use: "db"
input:
query: |
SELECT
COUNT(*) as total_users,
COUNT(CASE WHEN active = true THEN 1 END) as active_users,
MAX(created_at) as last_user_created
FROM users
- name: "audit_log"
use: "db"
input:
query: "INSERT INTO audit_log (action, user_id, timestamp) VALUES ($1, $2, NOW())"
params: ["user_created", "{{ $create_user.result.rows[0].id }}"]
🏷️ Tags
- postgres
- database
- sql
- query
Versão: 0.0.1
Autor: Philippe Assis <codephilippe@gmail.com>
Licença: MIT
Repositório: https://github.com/phlowdotdev/phlow