Skip to content

Migration

<!-- generated:meta -->

Grupdata
Planeresource
Spec structMigrationSpec

<!-- /generated:meta -->

Kapan Memakai

kind: Migration adalah structural change untuk DDL yang tidak dicakup field Entity.

Kapan memakai Migration:

  • Index custom, function, trigger, extension, materialized view
  • DDL yang melebihi apa yang diekspresikan field definitions

Kapan TIDAK pakai Migration:

  • Perubahan struktur biasa (tambah field, ganti type) → framework hitung structural diff otomatis
  • Data backfill → data migration (script ber-versi), bukan structural diff
  • DML ditolak saat runtime — Migration murni DDL

Sumber kontrak: docs/spec/backend/01-core-basic.md §4.

Contoh Manifest

yaml
apiVersion: formspec.dev/v1
kind: Migration
metadata:
  name: add-invoice-index
  module: billing
spec:
  up: "CREATE INDEX idx_invoice_date ON invoice(transaction_date)"
  down: "DROP INDEX idx_invoice_date"

Atribut

<!-- generated:attributes -->

AtributTipeWajibContohDeskripsi
ddlstringCREATE INDEX idx_invoice_date ON invoice(transaction_date)
modulestringbilling

<!-- /generated:attributes -->

Gotchas

  • Tiga jenis migrasi: structural (otomatis dari diff Entity, tidak pernah ditulis tangan) · custom DDL (kind: Migration) · data migration (script ber-versi).
  • DML ditolak saat runtime — hanya DDL.
  • Structural diff dihasilkan framework dari perubahan spec; PersistBackend menerjemahkan ke storage-nya (bukan "framework generate SQL").
  • Cross-ref: docs/spec/backend/01-core-basic.md §4 · ai_skills/formspec-kinds

Standar terbuka (CC0) dengan implementasi referensi.