Skip to content

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.


Biawak memetakan perintah Drizzle Kit ke dalam perintah package manager yang mudah digunakan:

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.

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.

Gunakan perintah ini untuk mengeksekusi seluruh berkas SQL migrasi yang belum terpasang ke database target:

bun run db:migrate

Setelah membuat tabel, Anda memerlukan data awal (seperti data akun user default, konfigurasi sistem, atau kategori barang).

Jalankan perintah ini untuk mengeksekusi script seeder bawaan Biawak:

bun run db:seed

Hasil: Menambahkan akun bawaan berikut ke database Anda:

  • πŸ‘‘ Admin: admin@gmail.com dengan password Password123
  • πŸ‘€ User: user@gmail.com dengan password Password123

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);

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.