Generación de Esquemas
Resumen
Sección titulada «Resumen»Rebase usa un pipeline de esquema-como-código donde sus definiciones de colecciones en TypeScript son la única fuente de verdad. La CLI las transforma a través de un pipeline determinista:
Collections (TypeScript) → Drizzle Schema → SQL Migrations → PostgreSQLEsta página cubre todos los comandos de la CLI involucrados en ese pipeline.
El Pipeline
Sección titulada «El Pipeline»1. Colecciones → Esquema de Drizzle
Sección titulada «1. Colecciones → Esquema de Drizzle»Sus definiciones de colecciones en config/collections/ describen tablas, columnas, tipos, relaciones y enums. El comando schema generate las lee y produce un archivo de esquema de Drizzle ORM.
2. Esquema de Drizzle → Migraciones
Sección titulada «2. Esquema de Drizzle → Migraciones»A partir del esquema de Drizzle generado, db generate compara con el estado actual de la base de datos y produce archivos de migración SQL con marca de tiempo.
3. Migraciones → PostgreSQL
Sección titulada «3. Migraciones → PostgreSQL»El comando db migrate aplica las migraciones pendientes a su base de datos PostgreSQL.
Comandos
Sección titulada «Comandos»rebase schema generate
Sección titulada «rebase schema generate»Genere un archivo de esquema de Drizzle ORM a partir de sus definiciones de colecciones:
rebase schema generateQué hace:
- Lee todas las colecciones de
config/collections/ - Genera
backend/src/schema.generated.tscon las definiciones de tablas, enums y relaciones de Drizzle
Opciones:
| Flag | Descripción |
|---|---|
--collections, -c |
Ruta al directorio de colecciones (por defecto: config/collections/) |
--output, -o |
Ruta de salida para el archivo de esquema generado |
--watch, -w |
Vigilar cambios y regenerar automáticamente |
El modo watch es útil durante el desarrollo — edite un archivo de colección y el esquema se regenera al instante:
rebase schema generate --watchrebase schema introspect
Sección titulada «rebase schema introspect»Aplique ingeniería inversa a las definiciones de colecciones a partir de una base de datos PostgreSQL existente:
rebase schema introspectQué hace:
- Se conecta a su base de datos (usando la cadena de conexión de su
.env) - Inspecciona todas las tablas, columnas, tipos y claves foráneas
- Genera archivos de definición de colecciones
Opciones:
| Flag | Descripción |
|---|---|
--output, -o |
Directorio de salida para los archivos de colección generados |
Esto es útil al adoptar Rebase en una base de datos existente — primero haga introspección y luego personalice las colecciones generadas.
rebase db push
Sección titulada «rebase db push»Envíe los cambios de esquema directamente a la base de datos sin archivos de migración:
rebase db pushQué hace:
- Lee el esquema de Drizzle generado
- Aplica los cambios directamente a la base de datos (CREATE, ALTER, DROP)
- No crea archivos de migración
rebase db generate
Sección titulada «rebase db generate»Genere archivos de migración SQL a partir de los cambios de esquema:
rebase db generateQué hace:
- Compara el esquema de Drizzle con el estado actual de la base de datos
- Produce archivos de migración SQL con marca de tiempo en el directorio
drizzle/ - Los archivos pueden revisarse, editarse y confirmarse en el control de versiones
Las migraciones generadas son archivos SQL simples — puede inspeccionarlas y modificarlas antes de aplicarlas.
rebase db migrate
Sección titulada «rebase db migrate»Ejecute todas las migraciones pendientes:
rebase db migrateQué hace:
- Lee el directorio
drizzle/en busca de migraciones no aplicadas - Las aplica en orden a la base de datos
- Rastrea qué migraciones se han aplicado
rebase db studio
Sección titulada «rebase db studio»Abra Drizzle Studio para navegar y editar su base de datos visualmente:
rebase db studiorebase db branch
Sección titulada «rebase db branch»Ramificación de base de datos para desarrollo en paralelo:
rebase db branch create feature_authrebase db branch listrebase db branch delete feature_authrebase doctor
Sección titulada «rebase doctor»Detecte la desviación de tres vías entre sus definiciones de colecciones, el esquema de Drizzle generado y la base de datos PostgreSQL en vivo:
rebase doctorQué comprueba:
- Colecciones ↔ Esquema generado — ¿están sincronizados?
- Esquema generado ↔ Base de datos — ¿hay cambios sin aplicar?
- Colecciones ↔ Base de datos — ¿hay alguna desviación inesperada?
Ejecute doctor cada vez que algo parezca desincronizado. Señala exactamente dónde está la discrepancia.
rebase generate-sdk
Sección titulada «rebase generate-sdk»Genere un SDK de cliente tipado a partir de sus definiciones de colecciones:
rebase generate-sdkQué hace:
- Lee las colecciones de
config/collections/(admite exports de barrilindex.tso archivos individuales) - Genera tipos de TypeScript para todas las entidades en
generated/sdk/ - Produce un archivo
database.types.tspara usar concreateRebaseClient<Database>()
Opciones:
| Flag | Descripción |
|---|---|
--collections |
Ruta al directorio de colecciones |
--output |
Directorio de salida para el SDK (por defecto: generated/sdk/) |
Uso tras la generación:
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();Flujo de Trabajo de Desarrollo
Sección titulada «Flujo de Trabajo de Desarrollo»El flujo de trabajo de iteración rápida para desarrollo:
# 1. Edit your collection in config/collections/# 2. Generate the Drizzle schemarebase schema generate
# 3. Push directly to dev databaserebase db pushFlujo de Trabajo de Producción
Sección titulada «Flujo de Trabajo de Producción»El flujo de trabajo seguro y revisable para producción:
# 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 migrateSolución de Problemas
Sección titulada «Solución de Problemas»| Síntoma | Solución |
|---|---|
Could not detect an active database plugin |
Instale @rebasepro/server-postgres en backend/package.json |
| El archivo de esquema no se actualiza | Compruebe que la ruta --collections apunta al directorio correcto |
| La migración muestra cambios inesperados | Ejecute rebase doctor para identificar la desviación |
db push falla en producción |
Use db generate + db migrate en su lugar |
Próximos Pasos
Sección titulada «Próximos Pasos»- Colecciones — Defina su modelo de datos
- Referencia de la CLI — Todos los comandos de la CLI
- SDK del Cliente — Use el SDK generado
