Galeria de exemplos¶
Enquanto as Receitas resolvem um problema isolado, os exemplos
são projetinhos completos que rodam — do CREATE TABLE à última query — pra você ver
as peças encaixadas. Cada um é copy-paste e auto-contido.
Os projetos¶
-
Um gerenciador de tarefas de terminal. Cria a tabela via migração, insere, lista e conclui — o loop completo em SQLite síncrono. Comece por aqui.
-
users→posts→comments. MostrahasMany/belongsTo+loadRelations(sem N+1) e joins compostos tipados. O exemplo de modelagem relacional. -
Endpoints HTTP backed por
BaseRepository, com paginação tipada e convenção 404. A ponte com o mundotempest-fastapi-sdk/tempest-ts-sdk. -
REST API (Express + Repository)
A mesma API sobre o framework HTTP mais difundido do Node. A camada de dados é idêntica — só muda a casca.
-
REST API (Fastify + Repository)
A mesma API sobre Fastify, com
Params/Body/Querystringtipados por rota combinando com os tipos do repositório. -
O ciclo de vida do schema:
autogenerate,upgrade/downgradee um gate de drift no CI. Como evoluir o banco sem escrever SQL solto.
O padrão compartilhado¶
Todos os exemplos SQLite usam o mesmo esqueleto pra ter uma tabela pronta: um driver único, uma migração pontual que cria as tabelas, e uma sessão sobre o mesmo driver.
import { NodeSqliteDriver, SyncEngine } from "tempest-db-js";
import { MigrationRunner, reflectTable, type Migration } from "tempest-db-js/migrations";
const driver = NodeSqliteDriver.open(":memory:"); // um banco em memória
const init: Migration = {
revision: "init",
downRevision: [],
up: (op) => op.createTable(reflectTable(MyModel)),
down: (op) => op.dropTable(reflectTable(MyModel)),
};
new MigrationRunner(driver, "sqlite").upgrade([init], new Date().toISOString());
const session = new SyncEngine(driver).session(); // sessão sobre o MESMO driver
Por que o mesmo driver?
Um :memory: pertence à conexão que o abriu. Reusar o mesmo driver entre o
MigrationRunner e o SyncEngine garante que a sessão veja as tabelas que a
migração criou. Pra um banco em arquivo (sqlite:///app.db), conexões diferentes
também enxergam o mesmo schema.