Alur Kerja Migrasi & Seeding
Biawak menggunakan Drizzle Kit untuk mengotomatiskan pembuatan berkas SQL migrasi dari kode skema TypeScript Anda, serta mendukung script seeding data awal untuk mengisi data database secara cepat.
π Perintah Migrasi Database
Section titled βπ Perintah Migrasi DatabaseβBiawak memetakan perintah Drizzle Kit ke dalam perintah package manager yang mudah digunakan:
1. Prototyping Cepat (db:push)
Section titled β1. Prototyping Cepat (db:push)βUntuk memperbarui struktur database lokal Anda secara instan selama tahap pengembangan tanpa perlu membuat berkas SQL migrasi:
bun run db:push
Kegunaan: Sangat direkomendasikan saat membuat skema tabel baru secara lokal agar database SQLite Anda langsung sinkron.
2. Membuat SQL Migrasi (db:generate)
Section titled β2. Membuat SQL Migrasi (db:generate)βJika Anda melakukan perubahan skema dan ingin mendokumentasikannya ke dalam bentuk berkas SQL migrasi terstruktur (biasanya untuk staging/produksi):
bun run db:generate
Hasil: Membuat berkas migrasi .sql baru di folder src/db/drizzle/sqlite atau src/db/drizzle/mysql tergantung driver aktif.
3. Menjalankan Migrasi Produksi (db:migrate)
Section titled β3. Menjalankan Migrasi Produksi (db:migrate)βGunakan perintah ini untuk mengeksekusi seluruh berkas SQL migrasi yang belum terpasang ke database target:
bun run db:migrate
π± Mengisi Data Awal (db:seed)
Section titled βπ± Mengisi Data Awal (db:seed)βSetelah membuat tabel, Anda memerlukan data awal (seperti data akun user default, konfigurasi sistem, atau kategori barang).
Menjalankan Seeding
Section titled βMenjalankan SeedingβJalankan perintah ini untuk mengeksekusi script seeder bawaan Biawak:
bun run db:seed
Hasil: Menambahkan akun bawaan berikut ke database Anda:
- π Admin:
admin@gmail.comdengan passwordPassword123 - π€ User:
user@gmail.comdengan passwordPassword123
Menulis Seeder Kustom (src/db/seed.ts)
Section titled βMenulis Seeder Kustom (src/db/seed.ts)βAnda dapat menambahkan data awal tambahan dengan memodifikasi berkas seed.ts:
import { db } from "../config/drizzle.js";
import { products } from "./schema/index.js";
async function main() {
console.log("π± Menjalankan seeder kustom...");
await db.insert(products).values([
{ id: "p1", name: "Kopi Gayo", price: 35000 },
{ id: "p2", name: "Teh Matcha", price: 28000 }
]);
console.log("β
Seeding selesai!");
}
main().catch(console.error);
π Mereset Database (db:reset)
Section titled βπ Mereset Database (db:reset)βJika database lokal Anda sudah terlalu kotor dan Anda ingin membersihkan seluruh isi tabel serta mengulangi seeding dari nol, cukup jalankan:
bun run db:reset
Tindakan: Menghapus berkas SQLite lokal, membuat ulang database bersih, dan otomatis melakukan seeding ulang.
