Ga naar inhoud

Migraties

Terminal window
# pas tapedb.schema.ts aan, dan
npx tapedb migrate dev --name add_task_priority

migrate dev vergelijkt het schema met tapedb/schema.snapshot.json en schrijft het volgende genummerde SQL-bestand, dat je net als bij elke ORM reviewt en commit, plus de bundle die worker.ts importeert. De Durable Object van elke workspace past openstaande migraties toe bij de volgende wake, één transactie per migratie, met foreign keys uitgeschakeld eromheen en gecontroleerd voordat hij commit. Een migratie die een rij naar niets zou laten wijzen, draait terug.

  • Een nieuw verplicht veld heeft .default(...) of .optional() nodig.
  • Drops hebben --accept-data-loss nodig; renames hebben --rename old=new of --rename model.old=new nodig, anders lezen ze als een drop plus een add.
  • Wijzigingen aan type, default of referentie bouwen de tabel opnieuw, inclusief tabellen waarnaar andere tabellen verwijzen: child-rijen behouden hun keys en er cascadeert niets.
  • Migraties declareren wat ze wijzigden, zodat herstel logsegmenten en snapshots kan afspelen die onder een ouder schema zijn geschreven. Ongedeclareerde drift faalt gesloten.

migrate status toont de gecommitte migraties en meldt of het schema up to date is. migrate check faalt in CI of een pre-commit hook wanneer het schema wijzigingen heeft zonder migratie. tapedb deploy weigert een dev-configuratie of een ongemigreerd schema te versturen en draait daarna wrangler deploy.

Volgende stap: bestanden, presence en broadcast, of herstel begrijpen.