Base de datos y migraciones
Trabaja con seguridad con PostgreSQL, el esquema Drizzle, la base de pruebas y el ejecutor de migraciones de producción.
Sincronizado con el commit
7d452a6del starter.
El starter usa PostgreSQL y Drizzle. src/db/schema.ts es la fuente del esquema y el SQL versionado en src/db/migrations/ es su historial desplegable. Solo src/models/** puede llamar a db().
Flujo local
pnpm setup crea bases separadas de desarrollo y pruebas. El nombre de pruebas debe contener test; el arnés se niega a truncar cualquier otra base.
Tras cambiar el esquema:
pnpm db:generate
pnpm db:migrate
pnpm test:db:setup
pnpm test:dbConfirma el SQL y meta/_journal.json junto al código. No edites una migración ya desplegada.
Producción
Las migraciones nunca se ejecutan automáticamente al desplegar:
pnpm db:check:prod
pnpm db:migrate:prodEl ejecutor es no interactivo, usa un advisory lock de PostgreSQL y verifica checksums. Haz copia de seguridad y aplica cambios expand/contract para que las versiones actual y nueva funcionen durante despliegues separados.
Convenciones
ides interno; las API públicas usanuuid.- El dinero usa unidades menores enteras y moneda.
- Las filas del tenant llevan
org_uuidy toda consulta se limita a él. - Claves idempotentes y números de transacción tienen unicidad en base.
- Se evita el acoplamiento general por claves foráneas; servicios y políticas de ciclo de vida controlan borrado e integridad.
- Reservas usa además una restricción de exclusión PostgreSQL contra intervalos solapados.
Lee docs/database.md y DEPLOYMENT.md del starter antes de cambiar contratos de datos.
Arquitectura y contratos de error
Comprende las capas obligatorias de Sushi SaaS, el flujo de datos del navegador, la autorización y el sistema de errores traducidos sin filtraciones.
Autenticación y administración
Configura Better Auth, identidad, organización personal y la aplicación administrativa independiente con MFA.