Ir para o conteúdo

Receitas

As receitas resolvem um problema pontual de cada vez — código completo, copy-paste, com a teoria do por quê logo ao lado. São o complemento prático do Tutorial: o tutorial te ensina os conceitos em ordem; as receitas mostram como aplicá-los em situações reais do dia a dia.

Como ler

Cada receita é independente — pule direto pra que você precisa. Todas assumem que você já passou pelo Tutorial (modelos, queries, execução).

Disponíveis

Receita Resolve
Chaves estrangeiras e UNIQUE FK, UNIQUE de coluna e constraints de tabela (composto/nomeado), estilo SQLAlchemy.
created_at / updated_at Timestamps gerenciados pelo banco, sem lembrar de setar na mão.
Mixins de modelo withTimestamps, withSoftDelete, withAudit — as colunas repetidas em toda tabela, declaradas uma vez.
Paginação tipada Listas paginadas com total/páginas, alinhadas ao tempest-fastapi-sdk.
Agregações e DISTINCT count/sum/avg/min/max + GROUP BY tipado e DISTINCT.
Upsert (ON CONFLICT) Inserir resolvendo conflito de chave: DO NOTHING ou DO UPDATE.
Active-record (opt-in) Métodos save/update/delete/reload numa linha, quando você prefere.
Unit of work (opt-in) Identity map + flush em lote, numa transação. O padrão continua objeto simples.
Logging e erros Ver o SQL que roda (onQuery) e erros com o SQL/params que falharam.
Erros de integridade (409) Ler o erro do driver de volta para a constraint que recusou a escrita.
Signals do repositório preSave/postSave/preDelete/postDelete — reagir a escrita sem envolver todo call site.
Trilha de auditoria Uma entrada por mudança, com diff antes/depois, na mesma transação.
Escolhendo o driver do SQLite node:sqlite (padrão) ou better-sqlite3, pela opção do engine ou pelo sufixo da URL.
Transações e savepoints Operações atômicas com commit/rollback automático e pontos de salvamento.
Colunas JSON e enum Guardar objetos tipados e uniões literais com segurança de tipos.
Tipos de coluna próprios customType — Money, Temporal, id com brand: a conversão mora na coluna.
Serialização (linha ↔ JSON) Converter linhas pra JSON e validar JSON de volta pra linha.
Conectando ao PostgreSQL Trocar SQLite por Postgres pela URL e ajustar o pool.
Fila durável com PostgreSQL FOR UPDATE SKIP LOCKED, contador atômico e idempotência por índice parcial.
Outbox transacional Linha de negócio e evento no mesmo commit; relay com lotes disjuntos.
Nomes de coluna Schema em snake_case com modelo em camelCase, sem drift falso.
Colunas array do PostgreSQL text[]/integer[] tipados, com @>, <@ e &&.
Comparação case-insensitive ieq para login sem diferenciar caixa — e a armadilha do ilike.
Busca de texto contains escapado e portátil; fullText/fullTextRank com stemming no PostgreSQL.
SQL cru em runtime session.raw para a query que o builder ainda não expressa.
Expressões no where Coluna vs coluna e funções SQL, para casar índice funcional.
Operações de conjunto UNION, UNION ALL, INTERSECT, EXCEPT com a forma dos ramos checada no tipo.
Funções de janela rowNumber, rank, lag/lead e agregação em janela, via compute().
CTE (WITH e WITH RECURSIVE) Nomear uma consulta e percorrer árvore numa query só.
MySQL: o que muda RETURNING por read-back e o que o MySQL não faz.

Procurando algo maior?

Se você quer ver tudo junto num projeto que roda, vá pra Exemplos: um Todo CLI, um blog com relations, uma REST API e o fluxo completo de migrações.