Aplicación starter

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 7d452a6 del 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:db

Confirma 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:prod

El 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

  • id es interno; las API públicas usan uuid.
  • El dinero usa unidades menores enteras y moneda.
  • Las filas del tenant llevan org_uuid y 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.

Base de datos y migraciones · Sushi SaaS