Ir al contenido

Generación de Esquemas

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 → PostgreSQL

Esta página cubre todos los comandos de la CLI involucrados en ese pipeline.

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.

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.

El comando db migrate aplica las migraciones pendientes a su base de datos PostgreSQL.

Genere un archivo de esquema de Drizzle ORM a partir de sus definiciones de colecciones:

rebase schema generate

Qué hace:

  • Lee todas las colecciones de config/collections/
  • Genera backend/src/schema.generated.ts con 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 --watch

Aplique ingeniería inversa a las definiciones de colecciones a partir de una base de datos PostgreSQL existente:

rebase schema introspect

Qué 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.

Envíe los cambios de esquema directamente a la base de datos sin archivos de migración:

rebase db push

Qué 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

Genere archivos de migración SQL a partir de los cambios de esquema:

rebase db generate

Qué 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.

Ejecute todas las migraciones pendientes:

rebase db migrate

Qué 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

Abra Drizzle Studio para navegar y editar su base de datos visualmente:

rebase db studio

Ramificación de base de datos para desarrollo en paralelo:

rebase db branch create feature_auth
rebase db branch list
rebase db branch delete feature_auth

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 doctor

Qué 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.

Genere un SDK de cliente tipado a partir de sus definiciones de colecciones:

rebase generate-sdk

Qué hace:

  • Lee las colecciones de config/collections/ (admite exports de barril index.ts o archivos individuales)
  • Genera tipos de TypeScript para todas las entidades en generated/sdk/
  • Produce un archivo database.types.ts para usar con createRebaseClient<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 autocomplete
const { data } = await client.data.products.find();

El flujo de trabajo de iteración rápida para desarrollo:

# 1. Edit your collection in config/collections/
# 2. Generate the Drizzle schema
rebase schema generate
# 3. Push directly to dev database
rebase db push

El flujo de trabajo seguro y revisable para producción:

# 1. Edit your collection in config/collections/
# 2. Generate the Drizzle schema
rebase schema generate
# 3. Generate SQL migration files
rebase db generate
# 4. Review the generated SQL in drizzle/
# 5. Commit the migration to version control
git add drizzle/
# 6. Apply in production
rebase db migrate
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