Application starter

Base de données et migrations

Utilisez en sécurité PostgreSQL, le schéma Drizzle, la base de test et l’outil de migration de production.

Synchronisé avec le commit 7d452a6 du starter.

Le starter utilise PostgreSQL et Drizzle. src/db/schema.ts est la source du schéma et les SQL versionnés de src/db/migrations/ son historique déployable. Seul src/models/** peut appeler db().

Flux local

pnpm setup crée des bases de développement et de test séparées. Le nom de test doit contenir test ; le garde-fou refuse de vider toute autre base.

Après un changement de schéma :

pnpm db:generate
pnpm db:migrate
pnpm test:db:setup
pnpm test:db

Commitez le SQL généré et meta/_journal.json avec le code. Ne modifiez jamais une migration déjà déployée.

Production

Les migrations ne sont jamais automatiques au déploiement :

pnpm db:check:prod
pnpm db:migrate:prod

L’outil non interactif prend un advisory lock PostgreSQL et vérifie les checksums. Sauvegardez d’abord et appliquez expand/contract afin que versions actuelle et suivante coexistent pendant les déploiements séparés.

Conventions

  • id reste interne ; les API publiques utilisent uuid.
  • L’argent est stocké en unités mineures entières avec sa devise.
  • Les données tenant portent org_uuid et chaque requête modèle le filtre.
  • Clés d’idempotence et numéros de transaction sont uniques en base.
  • Le starter évite le couplage généralisé par clés étrangères ; services et politiques de cycle de vie gèrent suppression et intégrité.
  • Les réservations ajoutent une contrainte d’exclusion PostgreSQL contre les créneaux qui se chevauchent.

Lisez docs/database.md et DEPLOYMENT.md du starter avant de modifier les contrats de données.

Base de données et migrations · Sushi SaaS