Multi-ORM & Generator
Mengganti ORM aktif dengan database:switch, dan meng-generate project baru dengan stack pilihan via database:generate.
Multi-ORM & Generator
BigStarter mendukung Drizzle dan Prisma sebagai ORM resmi — satu aktif per project, dipilih saat pembuatan/konfigurasi project (build-time source selection, bukan runtime branching). Database dan datanya tidak berubah selama engine/koneksi sama.
Mengganti ORM Aktif (database:switch)
npm run database:switch -- --orm=prisma # atau drizzle | supabase (legacy)
npm run database:switch -- --orm=prisma --dry-runYang dilakukan CLI:
- Validasi stack (
engine/hostsaat ini + ORM tujuan). - Menulis ulang satu baris import binding di
modules/<m>/server/queries/index.tsuntuk semua modul terdaftar di catalog. - Memperbarui nilai
orm:diconfig/database.ts. - Menulis state
.bigstarter/database.json(stack, modul terikat, timestamp).
CLI hanya menyentuh modul yang terdaftar di tooling/modules/catalog.ts — modul custom milikmu tidak pernah diubah. Beralih ke Prisma membutuhkan npm run db:prisma:generate sekali (setelah perubahan schema).
Untuk Modul Custom
Modul custom cukup mengimplementasikan ORM yang sedang aktif — tidak wajib menyediakan semua variant. Pertahankan pola queries/index.ts satu-baris-binding milikmu sendiri supaya bisa mengikuti pola switch secara manual bila suatu saat diperlukan.
Meng-generate Project Baru (database:generate)
Untuk menjadikan BigStarter sebagai basis project baru dengan stack pilihan:
npm run database:generate -- --orm=drizzle --engine=postgresql --host=supabase \
--output=../project-baru --modules=tasks,billingGenerator menyusun kontribusi semua modul yang diminta:
- Runtime — file variant query, contract, dan binding dari source resmi modul.
- Schema — aset schema per-ORM (mis.
billing.prismauntuk Prisma). - Migrasi SQL kanonik yang dibutuhkan modul (webhook idempotency, ledger kredit, billing accounts, dsb.).
- Dependency & scripts — deps runtime/dev didedup, script
db:*disesuaikan ORM,.env.exampleditambah variabel yang dibutuhkan.
Benturan file antar modul dideteksi sebelum penulisan; implementasi ORM yang tidak dipilih dibersihkan otomatis berdasarkan manifest masing-masing modul.
Varian Supabase (Legacy)
Client Supabase untuk data tetap tersedia sebagai varian legacy ("supabase" di DATABASE_ORMS) demi project lama — tetapi seluruh modul official BigStarter kini berjalan di Drizzle/Prisma, dan Supabase client hanya dipakai untuk Auth, Storage, dan Realtime.
Tooling Migrasi: Pisah Per Konteks
| Konteks | Alat |
|---|---|
| Repo distribusi BigStarter (project ini) | tooling/supabase/migrations/ + supabase db push |
| Project hasil generate (Drizzle) | drizzle-kit generate / migrate |
| Project hasil generate (Prisma) | prisma migrate dev / deploy |
Jangan pernah mencampur dua alat migrasi pada database yang sama.
