| title | Banco de Dados & Supabase |
|---|---|
| description | Estrutura do banco de dados e integração com Supabase |
A Social API utiliza PostgreSQL hospedado no Supabase. Mas tem um detalhe importante: usamos VIEWs pra abstrair a estrutura real das tabelas.
A conexão usa o driver pgx diretamente (sem ORM):
DATABASE_URL=postgres://postgres.[ref]:[pass]@db.[ref].supabase.co:5432/postgres?sslmode=requireO código Go usa VIEWs que mapeiam para as tabelas reais do Supabase:
| VIEW (Go) | Tabela real (Supabase) |
|---|---|
accounts |
social_media_accounts |
posts |
social_media_metrics |
Isso permite que o schema do Go seja mais limpo enquanto mantém compatibilidade com o ecossistema Supabase.
| Tabela | Descrição |
|---|---|
social_media_accounts |
Perfis monitorados (Instagram, TikTok) |
social_media_metrics |
Posts e métricas atuais |
metric_snapshots |
Histórico de métricas de posts |
account_snapshots |
Histórico de crescimento de contas |
jobs |
Fila de tarefas assíncronas |
post_ai_analysis |
Análises de IA por post |
enriched_metrics |
Métricas enriquecidas com IA |
Todas as tabelas usam enterprise_id para isolamento de dados:
-- Exemplo de query isolada por tenant
SELECT * FROM accounts
WHERE enterprise_id = 'uuid-da-enterprise'
ORDER BY created_at DESC;func (r *AccountRepository) List(ctx context.Context) ([]Account, error) {
enterpriseID := ctx.Value("enterprise_id").(string)
rows, err := r.db.Query(ctx, `
SELECT * FROM accounts
WHERE enterprise_id = $1
ORDER BY created_at DESC
`, enterpriseID)
// ...
}CREATE VIEW accounts AS
SELECT
id,
enterprise_id,
username,
platform,
profile_name,
profile_pic_url,
followers_count,
following_count,
posts_count,
last_sync_at,
created_at,
updated_at
FROM social_media_accounts;CREATE VIEW posts AS
SELECT
id,
account_id,
external_id,
caption,
type,
media_url,
thumbnail_url,
posted_at,
latest_likes,
latest_comments,
latest_views,
latest_shares,
latest_saves,
latest_engagement_rate,
created_at,
updated_at
FROM social_media_metrics;| Contexto | Formato |
|---|---|
| Go (código) | UPPERCASE (INSTAGRAM, TIKTOK) |
| Database | lowercase (instagram, tiktok) |
A conversão é automática via VIEWs — você não precisa se preocupar com isso.
O Supabase oferece ferramentas visuais pra gerenciar o banco:
- Table Editor — Visualizar e editar dados
- SQL Editor — Executar queries
- Logs — Monitorar queries lentas
- Backups — Backups automáticos diários