Génération de schéma
Vue d’ensemble
Section intitulée « Vue d’ensemble »Rebase utilise un pipeline schéma-en-tant-que-code où vos définitions de collections TypeScript sont l’unique source de vérité. La CLI les transforme via un pipeline déterministe :
Collections (TypeScript) → Drizzle Schema → SQL Migrations → PostgreSQLCette page couvre chaque commande CLI impliquée dans ce pipeline.
Le pipeline
Section intitulée « Le pipeline »1. Collections → Schéma Drizzle
Section intitulée « 1. Collections → Schéma Drizzle »Vos définitions de collections dans config/collections/ décrivent les tables, colonnes, types, relations et enums. La commande schema generate les lit et produit un fichier de schéma Drizzle ORM.
2. Schéma Drizzle → Migrations
Section intitulée « 2. Schéma Drizzle → Migrations »À partir du schéma Drizzle généré, db generate compare avec l’état actuel de la base de données et produit des fichiers de migration SQL horodatés.
3. Migrations → PostgreSQL
Section intitulée « 3. Migrations → PostgreSQL »La commande db migrate applique les migrations en attente à votre base de données PostgreSQL.
Commandes
Section intitulée « Commandes »rebase schema generate
Section intitulée « rebase schema generate »Générez un fichier de schéma Drizzle ORM à partir de vos définitions de collections :
rebase schema generateCe qu’elle fait :
- Lit toutes les collections depuis
config/collections/ - Génère
backend/src/schema.generated.tsavec les définitions de tables Drizzle, les enums et les relations
Options :
| Flag | Description |
|---|---|
--collections, -c |
Chemin vers le répertoire des collections (par défaut : config/collections/) |
--output, -o |
Chemin de sortie pour le fichier de schéma généré |
--watch, -w |
Surveiller les changements et régénérer automatiquement |
Le mode watch est utile pendant le développement — modifiez un fichier de collection et le schéma est régénéré instantanément :
rebase schema generate --watchrebase schema introspect
Section intitulée « rebase schema introspect »Effectuez de l’ingénierie inverse sur les définitions de collections à partir d’une base de données PostgreSQL existante :
rebase schema introspectCe qu’elle fait :
- Se connecte à votre base de données (en utilisant la chaîne de connexion de votre
.env) - Inspecte toutes les tables, colonnes, types et clés étrangères
- Génère des fichiers de définition de collections
Options :
| Flag | Description |
|---|---|
--output, -o |
Répertoire de sortie pour les fichiers de collections générés |
C’est utile lors de l’adoption de Rebase sur une base de données existante — introspectez d’abord, puis personnalisez les collections générées.
rebase db push
Section intitulée « rebase db push »Poussez les changements de schéma directement vers la base de données sans fichiers de migration :
rebase db pushCe qu’elle fait :
- Lit le schéma Drizzle généré
- Applique les changements directement à la base de données (CREATE, ALTER, DROP)
- Ne crée pas de fichiers de migration
rebase db generate
Section intitulée « rebase db generate »Générez des fichiers de migration SQL à partir des changements de schéma :
rebase db generateCe qu’elle fait :
- Compare le schéma Drizzle avec l’état actuel de la base de données
- Produit des fichiers de migration SQL horodatés dans le répertoire
drizzle/ - Les fichiers peuvent être examinés, modifiés et validés dans le contrôle de version
Les migrations générées sont de simples fichiers SQL — vous pouvez les inspecter et les modifier avant de les appliquer.
rebase db migrate
Section intitulée « rebase db migrate »Exécutez toutes les migrations en attente :
rebase db migrateCe qu’elle fait :
- Lit le répertoire
drizzle/pour les migrations non appliquées - Les applique dans l’ordre à la base de données
- Suit quelles migrations ont été appliquées
rebase db studio
Section intitulée « rebase db studio »Ouvrez Drizzle Studio pour parcourir et modifier votre base de données visuellement :
rebase db studiorebase db branch
Section intitulée « rebase db branch »Branchement de base de données pour le développement parallèle :
rebase db branch create feature_authrebase db branch listrebase db branch delete feature_authrebase doctor
Section intitulée « rebase doctor »Détectez la dérive à trois voies entre vos définitions de collections, le schéma Drizzle généré et la base de données PostgreSQL en direct :
rebase doctorCe qu’elle vérifie :
- Collections ↔ Schéma généré — sont-ils synchronisés ?
- Schéma généré ↔ Base de données — y a-t-il des changements non appliqués ?
- Collections ↔ Base de données — y a-t-il une dérive inattendue ?
Exécutez doctor chaque fois que quelque chose semble désynchronisé. Il indique précisément où se situe l’incohérence.
rebase generate-sdk
Section intitulée « rebase generate-sdk »Générez un SDK client typé à partir de vos définitions de collections :
rebase generate-sdkCe qu’elle fait :
- Lit les collections depuis
config/collections/(prend en charge les exports de barilindex.tsou les fichiers individuels) - Génère des types TypeScript pour toutes les entités dans
generated/sdk/ - Produit un fichier
database.types.tsà utiliser aveccreateRebaseClient<Database>()
Options :
| Flag | Description |
|---|---|
--collections |
Chemin vers le répertoire des collections |
--output |
Répertoire de sortie pour le SDK (par défaut : generated/sdk/) |
Utilisation après la génération :
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();Flux de travail de développement
Section intitulée « Flux de travail de développement »Le flux de travail d’itération rapide pour le développement :
# 1. Edit your collection in config/collections/# 2. Generate the Drizzle schemarebase schema generate
# 3. Push directly to dev databaserebase db pushFlux de travail de production
Section intitulée « Flux de travail de production »Le flux de travail sûr et examinable pour la production :
# 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 migrateDépannage
Section intitulée « Dépannage »| Symptôme | Solution |
|---|---|
Could not detect an active database plugin |
Installez @rebasepro/server-postgres dans backend/package.json |
| Le fichier de schéma ne se met pas à jour | Vérifiez que le chemin --collections pointe vers le bon répertoire |
| La migration montre des changements inattendus | Exécutez rebase doctor pour identifier la dérive |
db push échoue en production |
Utilisez db generate + db migrate à la place |
Étapes suivantes
Section intitulée « Étapes suivantes »- Collections — Définissez votre modèle de données
- Référence CLI — Toutes les commandes CLI
- SDK client — Utilisez le SDK généré
