Generazione dello Schema
Panoramica
Sezione intitolata “Panoramica”Rebase usa una pipeline schema-come-codice in cui le tue definizioni di collezioni TypeScript sono l’unica fonte di verità. La CLI le trasforma attraverso una pipeline deterministica:
Collections (TypeScript) → Drizzle Schema → SQL Migrations → PostgreSQLQuesta pagina copre ogni comando CLI coinvolto in quella pipeline.
La Pipeline
Sezione intitolata “La Pipeline”1. Collezioni → Schema Drizzle
Sezione intitolata “1. Collezioni → Schema Drizzle”Le tue definizioni di collezioni in config/collections/ descrivono tabelle, colonne, tipi, relazioni ed enum. Il comando schema generate le legge e produce un file di schema Drizzle ORM.
2. Schema Drizzle → Migrazioni
Sezione intitolata “2. Schema Drizzle → Migrazioni”Dallo schema Drizzle generato, db generate confronta con lo stato corrente del database e produce file di migrazione SQL con timestamp.
3. Migrazioni → PostgreSQL
Sezione intitolata “3. Migrazioni → PostgreSQL”Il comando db migrate applica le migrazioni in sospeso al tuo database PostgreSQL.
Comandi
Sezione intitolata “Comandi”rebase schema generate
Sezione intitolata “rebase schema generate”Genera un file di schema Drizzle ORM dalle tue definizioni di collezioni:
rebase schema generateCosa fa:
- Legge tutte le collezioni da
config/collections/ - Genera
backend/src/schema.generated.tscon le definizioni di tabelle, enum e relazioni di Drizzle
Opzioni:
| Flag | Descrizione |
|---|---|
--collections, -c |
Percorso alla directory delle collezioni (predefinito: config/collections/) |
--output, -o |
Percorso di output per il file di schema generato |
--watch, -w |
Osservare le modifiche e rigenerare automaticamente |
La modalità watch è utile durante lo sviluppo — modifica un file di collezione e lo schema si rigenera istantaneamente:
rebase schema generate --watchrebase schema introspect
Sezione intitolata “rebase schema introspect”Esegui il reverse engineering delle definizioni di collezioni da un database PostgreSQL esistente:
rebase schema introspectCosa fa:
- Si connette al tuo database (usando la stringa di connessione dal tuo
.env) - Ispeziona tutte le tabelle, colonne, tipi e chiavi esterne
- Genera i file di definizione delle collezioni
Opzioni:
| Flag | Descrizione |
|---|---|
--output, -o |
Directory di output per i file di collezione generati |
Questo è utile quando si adotta Rebase su un database esistente — prima esegui l’introspezione, poi personalizza le collezioni generate.
rebase db push
Sezione intitolata “rebase db push”Applica le modifiche allo schema direttamente al database senza file di migrazione:
rebase db pushCosa fa:
- Legge lo schema Drizzle generato
- Applica le modifiche direttamente al database (CREATE, ALTER, DROP)
- Non crea file di migrazione
rebase db generate
Sezione intitolata “rebase db generate”Genera file di migrazione SQL dalle modifiche allo schema:
rebase db generateCosa fa:
- Confronta lo schema Drizzle con lo stato corrente del database
- Produce file di migrazione SQL con timestamp nella directory
drizzle/ - I file possono essere revisionati, modificati e committati nel controllo di versione
Le migrazioni generate sono semplici file SQL — puoi ispezionarle e modificarle prima di applicarle.
rebase db migrate
Sezione intitolata “rebase db migrate”Esegui tutte le migrazioni in sospeso:
rebase db migrateCosa fa:
- Legge la directory
drizzle/per le migrazioni non applicate - Le applica in ordine al database
- Tiene traccia di quali migrazioni sono state applicate
rebase db studio
Sezione intitolata “rebase db studio”Apri Drizzle Studio per sfogliare e modificare il tuo database visivamente:
rebase db studiorebase db branch
Sezione intitolata “rebase db branch”Branching del database per lo sviluppo parallelo:
rebase db branch create feature_authrebase db branch listrebase db branch delete feature_authrebase doctor
Sezione intitolata “rebase doctor”Rileva la deriva a tre vie tra le tue definizioni di collezioni, lo schema Drizzle generato e il database PostgreSQL in esecuzione:
rebase doctorCosa controlla:
- Collezioni ↔ Schema generato — sono sincronizzati?
- Schema generato ↔ Database — ci sono modifiche non applicate?
- Collezioni ↔ Database — c’è qualche deriva imprevista?
Esegui doctor ogni volta che qualcosa sembra non sincronizzato. Individua esattamente dove si trova la discrepanza.
rebase generate-sdk
Sezione intitolata “rebase generate-sdk”Genera un SDK client tipizzato dalle tue definizioni di collezioni:
rebase generate-sdkCosa fa:
- Legge le collezioni da
config/collections/(supporta gli export barrelindex.tso i file individuali) - Genera tipi TypeScript per tutte le entità in
generated/sdk/ - Produce un file
database.types.tsda usare concreateRebaseClient<Database>()
Opzioni:
| Flag | Descrizione |
|---|---|
--collections |
Percorso alla directory delle collezioni |
--output |
Directory di output per l’SDK (predefinito: generated/sdk/) |
Utilizzo dopo la generazione:
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();Flusso di Lavoro di Sviluppo
Sezione intitolata “Flusso di Lavoro di Sviluppo”Il flusso di lavoro a iterazione rapida per lo sviluppo:
# 1. Edit your collection in config/collections/# 2. Generate the Drizzle schemarebase schema generate
# 3. Push directly to dev databaserebase db pushFlusso di Lavoro di Produzione
Sezione intitolata “Flusso di Lavoro di Produzione”Il flusso di lavoro sicuro e revisionabile per la produzione:
# 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 migrateRisoluzione dei Problemi
Sezione intitolata “Risoluzione dei Problemi”| Sintomo | Soluzione |
|---|---|
Could not detect an active database plugin |
Installa @rebasepro/server-postgres in backend/package.json |
| Il file di schema non si aggiorna | Controlla che il percorso --collections punti alla directory corretta |
| La migrazione mostra modifiche impreviste | Esegui rebase doctor per identificare la deriva |
db push fallisce in produzione |
Usa db generate + db migrate invece |
Prossimi Passi
Sezione intitolata “Prossimi Passi”- Collezioni — Definisci il tuo modello di dati
- Riferimento CLI — Tutti i comandi CLI
- SDK Client — Usa l’SDK generato
