@purecore/supabase-emancipation
v1.0.5
Published
Drop-in replacement do Supabase Client para conexão direta com Postgres
Maintainers
Readme
Supabase Emancipation
Supalike - Drop-in replacement do Supabase Client para conexão direta com Postgres.
Este projeto fornece uma biblioteca TypeScript que replica a API do @supabase/supabase-js, mas conecta diretamente ao PostgreSQL em vez de usar o PostgREST. Ideal para aplicações backend que precisam de conexão direta ao banco.
🚀 Instalação
bun add pg dotenv
# ou
npm install pg dotenv⚙️ Configuração
1. Configure o arquivo .env
Adicione a connection string do seu PostgreSQL no arquivo .env:
DATABASE_URL=postgresql://usuario:senha@localhost:5432/nome_do_banco2. Crie o client
import { createClient } from "./index";
import { config } from "dotenv";
// Carrega variáveis do .env
config();
// Cria o client usando DATABASE_URL
const db = createClient(process.env.DATABASE_URL!);📚 Exemplos de Uso
SELECT (Query)
const { data, error } = await db
.from("users")
.select("*")
.eq("active", true)
.limit(10);INSERT
const { data, error } = await db
.from("users")
.insert({ name: "João", email: "[email protected]" })
.single();UPDATE
const { data, error } = await db
.from("users")
.update({ active: false })
.eq("id", 1)
.single();DELETE
const { data, error } = await db.from("users").delete().eq("id", 1);TRANSAÇÕES ✨
await db.transaction(async (tx) => {
await tx.from("accounts").update({ balance: 100 }).eq("id", 1);
await tx.from("accounts").update({ balance: 200 }).eq("id", 2);
// Se qualquer operação falhar, TUDO é revertido
});PAGINAÇÃO ✨
const { data, meta } = await db.from("products").select("*").paginate(1, 20); // Página 1, 20 itens
console.log(`Total: ${meta.total}, Última página: ${meta.lastPage}`);CDC / REALTIME
// Inicializa CDC
await db.initializeCDC();
// Escuta mudanças na tabela 'users'
db.cdc.on("change:users", (event) => {
console.log(event.eventType); // INSERT, UPDATE, DELETE
console.log(event.new); // Dados novos
console.log(event.old); // Dados antigos
});📖 Mais Exemplos
Veja example.ts para exemplos completos de uso.
🗄️ Database Setup
Executar Migrations
Cria a estrutura do banco de dados (tabelas, índices, triggers):
bun run migrate
# ou
npm run migrateAs migrations SQL estão em migrations/. Atualmente inclui:
001_create_usuarios.sql- Cria tabela usuarios com campos id, name, email, active, timestamps
Popular com Dados (Seed)
Insere dados de exemplo na tabela usuarios:
bun run seed
# ou
npm run seedSetup Completo (Migrate + Seed)
bun run db:setup
# ou
npm run db:setup📝 Changelog
Veja CHANGELOG.md para mudanças recentes.
🔧 Development
- Install:
bun install - Migrate:
bun run migrate - Seed:
bun run seed
⚠️ Importante
Esta biblioteca é para conexão direta com PostgreSQL. Se você está usando o Supabase com PostgREST, use o @supabase/supabase-js oficial.
🎯 Vantagens vs Supabase oficial
- Transações nativas: Suporte completo a BEGIN/COMMIT/ROLLBACK
- Paginação automática:
.paginate()retorna metadados úteis - Sem overhead de REST: Conexão direta = mais rápido
- CDC/Realtime nativo: Usando LISTEN/NOTIFY do Postgres
