Evora usa Drizzle como vía única para el esquema. Los scripts históricos migrate-*.ts ya no forman parte del repo.
Métodos actuales
| Método | Comando / ubicación | Uso recomendado |
|---|---|---|
| Drizzle push | pnpm run db:push | Desarrollo local, prototipos |
| Drizzle generate/migrate | db:generate, db:migrate | Producción con carpetas drizzle/ versionadas |
| SQL versionado | drizzle/*.sql | Cambios revisados en PR |
| Scripts de ops | scripts/ (seed, backup, jobs, staging) | Arranque y operación, no DDL |
Flujo recomendado para cambios nuevos
- Edita esquema en
src/lib/db/schema/*.ts. - En local:
pnpm run db:pushy prueba la app. - Para producción:
pnpm run db:generate→ revisa SQL →pnpm run db:migrateen deploy. - Si necesitas un backfill puntual, añade un script idempotente en
scripts/y un comando npm temporal; elimínalo cuando ya no sirva.
Restaurar desde cero
pnpm run db:fresh
Eso hace: db:reset → db:push → db:seed:bootstrap (roles + Free + Plan Plataforma).
Planes SaaS comerciales adicionales: el superadmin los crea en el panel. Para dejar solo canónicos: pnpm db:sync:plans.
Producción
- Backup (
pnpm run db:backupo snapshot del proveedor). - Aplicar migración en ventana de bajo tráfico.
- Verificar con smoke test (
pnpm run staging:gateen staging). - No uses
db:pushdestructivo contra producción sin revisar el diff de Drizzle.