Geração de Esquema
Visão Geral
Seção intitulada “Visão Geral”A Rebase usa um pipeline de esquema-como-código onde suas definições de coleções em TypeScript são a única fonte de verdade. A CLI as transforma através de um pipeline determinístico:
Collections (TypeScript) → Drizzle Schema → SQL Migrations → PostgreSQLEsta página cobre todos os comandos da CLI envolvidos nesse pipeline.
O Pipeline
Seção intitulada “O Pipeline”1. Coleções → Esquema Drizzle
Seção intitulada “1. Coleções → Esquema Drizzle”Suas definições de coleções em config/collections/ descrevem tabelas, colunas, tipos, relações e enums. O comando schema generate as lê e produz um arquivo de esquema Drizzle ORM.
2. Esquema Drizzle → Migrações
Seção intitulada “2. Esquema Drizzle → Migrações”A partir do esquema Drizzle gerado, db generate compara com o estado atual do banco de dados e produz arquivos de migração SQL com carimbo de data/hora.
3. Migrações → PostgreSQL
Seção intitulada “3. Migrações → PostgreSQL”O comando db migrate aplica as migrações pendentes ao seu banco de dados PostgreSQL.
Comandos
Seção intitulada “Comandos”rebase schema generate
Seção intitulada “rebase schema generate”Gere um arquivo de esquema Drizzle ORM a partir das suas definições de coleções:
rebase schema generateO que ele faz:
- Lê todas as coleções de
config/collections/ - Gera
backend/src/schema.generated.tscom as definições de tabelas, enums e relações do Drizzle
Opções:
| Flag | Descrição |
|---|---|
--collections, -c |
Caminho para o diretório de coleções (padrão: config/collections/) |
--output, -o |
Caminho de saída para o arquivo de esquema gerado |
--watch, -w |
Observar mudanças e regenerar automaticamente |
O modo watch é útil durante o desenvolvimento — edite um arquivo de coleção e o esquema é regenerado instantaneamente:
rebase schema generate --watchrebase schema introspect
Seção intitulada “rebase schema introspect”Faça engenharia reversa das definições de coleções a partir de um banco de dados PostgreSQL existente:
rebase schema introspectO que ele faz:
- Conecta-se ao seu banco de dados (usando a string de conexão do seu
.env) - Inspeciona todas as tabelas, colunas, tipos e chaves estrangeiras
- Gera arquivos de definição de coleções
Opções:
| Flag | Descrição |
|---|---|
--output, -o |
Diretório de saída para os arquivos de coleção gerados |
Isso é útil ao adotar a Rebase em um banco de dados existente — faça a introspecção primeiro, depois personalize as coleções geradas.
rebase db push
Seção intitulada “rebase db push”Envie as mudanças de esquema diretamente para o banco de dados sem arquivos de migração:
rebase db pushO que ele faz:
- Lê o esquema Drizzle gerado
- Aplica as mudanças diretamente ao banco de dados (CREATE, ALTER, DROP)
- Não cria arquivos de migração
rebase db generate
Seção intitulada “rebase db generate”Gere arquivos de migração SQL a partir das mudanças de esquema:
rebase db generateO que ele faz:
- Compara o esquema Drizzle com o estado atual do banco de dados
- Produz arquivos de migração SQL com carimbo de data/hora no diretório
drizzle/ - Os arquivos podem ser revisados, editados e commitados no controle de versão
As migrações geradas são arquivos SQL simples — você pode inspecioná-las e modificá-las antes de aplicá-las.
rebase db migrate
Seção intitulada “rebase db migrate”Execute todas as migrações pendentes:
rebase db migrateO que ele faz:
- Lê o diretório
drizzle/em busca de migrações não aplicadas - Aplica-as em ordem ao banco de dados
- Rastreia quais migrações foram aplicadas
rebase db studio
Seção intitulada “rebase db studio”Abra o Drizzle Studio para navegar e editar seu banco de dados visualmente:
rebase db studiorebase db branch
Seção intitulada “rebase db branch”Ramificação de banco de dados para desenvolvimento paralelo:
rebase db branch create feature_authrebase db branch listrebase db branch delete feature_authrebase doctor
Seção intitulada “rebase doctor”Detecte a divergência de três vias entre suas definições de coleções, o esquema Drizzle gerado e o banco de dados PostgreSQL ativo:
rebase doctorO que ele verifica:
- Coleções ↔ Esquema gerado — estão sincronizados?
- Esquema gerado ↔ Banco de dados — há mudanças não aplicadas?
- Coleções ↔ Banco de dados — há alguma divergência inesperada?
Execute doctor sempre que algo parecer fora de sincronia. Ele aponta exatamente onde está a incompatibilidade.
rebase generate-sdk
Seção intitulada “rebase generate-sdk”Gere um SDK cliente tipado a partir das suas definições de coleções:
rebase generate-sdkO que ele faz:
- Lê as coleções de
config/collections/(suporta exports de barrilindex.tsou arquivos individuais) - Gera tipos TypeScript para todas as entidades em
generated/sdk/ - Produz um arquivo
database.types.tspara uso comcreateRebaseClient<Database>()
Opções:
| Flag | Descrição |
|---|---|
--collections |
Caminho para o diretório de coleções |
--output |
Diretório de saída para o SDK (padrão: generated/sdk/) |
Uso após a geração:
import { createRebaseClient } from "@rebasepro/client";import type { Database } from "./generated/sdk/database.types";
const client = createRebaseClient<Database>({ baseUrl: "http://localhost:3001",});
// Full type safety and autocompleteconst { data } = await client.data.products.find();Fluxo de Trabalho de Desenvolvimento
Seção intitulada “Fluxo de Trabalho de Desenvolvimento”O fluxo de trabalho de iteração rápida para desenvolvimento:
# 1. Edit your collection in config/collections/# 2. Generate the Drizzle schemarebase schema generate
# 3. Push directly to dev databaserebase db pushFluxo de Trabalho de Produção
Seção intitulada “Fluxo de Trabalho de Produção”O fluxo de trabalho seguro e revisável para produção:
# 1. Edit your collection in config/collections/# 2. Generate the Drizzle schemarebase schema generate
# 3. Generate SQL migration filesrebase db generate
# 4. Review the generated SQL in drizzle/# 5. Commit the migration to version controlgit add drizzle/
# 6. Apply in productionrebase db migrateSolução de Problemas
Seção intitulada “Solução de Problemas”| Sintoma | Solução |
|---|---|
Could not detect an active database plugin |
Instale @rebasepro/server-postgres em backend/package.json |
| O arquivo de esquema não atualiza | Verifique se o caminho --collections aponta para o diretório correto |
| A migração mostra mudanças inesperadas | Execute rebase doctor para identificar a divergência |
db push falha em produção |
Use db generate + db migrate em vez disso |
Próximos Passos
Seção intitulada “Próximos Passos”- Coleções — Defina seu modelo de dados
- Referência da CLI — Todos os comandos da CLI
- SDK Cliente — Use o SDK gerado
