Database
Drizzle ORM di atas driver bawaan Bun — satu DATABASE_URL, empat engine yang didukung (postgres, mysql, sqlite file, sqlite in-memory).
Ringkasan
Bosia memakai Drizzle ORM di atas driver bawaan Bun — Bun.SQL untuk postgres dan mysql, bun:sqlite untuk SQLite. Satu variabel DATABASE_URL memilih engine sekaligus target koneksi; skema URL menentukan adapter yang dimuat.
Tidak ada paket npm per-engine — Drizzle menyediakan wrapper drizzle-orm/bun-sql dan drizzle-orm/bun-sqlite di atas driver bawaan.
Engine yang didukung
| Engine | Bentuk URL | Driver Bun | Dialect Drizzle | Persisten? |
|---|---|---|---|---|
| postgres | postgres://user:pass@host:port/db |
Bun.SQL |
drizzle-orm/bun-sql (pg) |
ya |
| mysql | mysql://user:pass@host:port/db |
Bun.SQL |
drizzle-orm/bun-sql (mysql) |
ya |
| sqlite (file) | sqlite://./data/app.db |
bun:sqlite |
drizzle-orm/bun-sqlite |
ya |
| sqlite (mem) | sqlite://:memory: |
bun:sqlite |
drizzle-orm/bun-sqlite |
tidak — hilang |
Pemasangan
bunx bosia feat drizzlePerintah ini menulis src/features/drizzle/index.ts (adapter multi-engine), schemas.ts, seeds/runner.ts, dan drizzle.config.ts ke dalam aplikasi Anda dan menambahkan skrip db:generate, db:migrate, db:seed ke package.json.
Lalu set DATABASE_URL di .env.local:
# pilih salah satu
DATABASE_URL=postgres://user:pass@localhost:5432/myapp
# DATABASE_URL=mysql://user:pass@localhost:3306/myapp
# DATABASE_URL=sqlite://./data/app.db
# DATABASE_URL=sqlite://:memory:Generate + apply + seed:
bun run db:generate # hasilkan migrations/ dari file *.table.ts Anda
bun run db:migrate # terapkan
bun run db:seed # jalankan *.ts di src/features/drizzle/seeds/ secara urutMenambah tabel
Lihat skill bosia-drizzle-feature untuk pola kanonik: satu *.table.ts per tabel, service kolokasi, dan seed bernomor (001_*.ts, 002_*.ts) bila perlu data awal. Re-export tabel dari schemas.ts supaya Drizzle Kit menemukan tipe-nya.
SQLite in-memory
sqlite://:memory: hanya untuk dev/test. Setiap restart server memulai dengan schema kosong dan nol baris. Jangan menjalankan bun run db:migrate dari agent chat untuk engine ini — migration-nya sia-sia (schema hilang saat boot berikutnya). Untuk schema in-memory pada tes, bangun ulang di dalam test harness, bukan lewat db:migrate.
Ganti engine
Jangan pakai ulang src/features/drizzle/migrations/ antar engine — migration spesifik per dialect (postgres SERIAL, mysql AUTO_INCREMENT, sqlite AUTOINCREMENT semua beda). Untuk ganti:
- Update
DATABASE_URLdi.env.localke skema baru. - Hapus
src/features/drizzle/migrations/*.sql(sisakan.gitkeep). - Jalankan
bun run db:generatelalubun run db:migrate.
Dari editor (chat tools)
Saat bekerja di editor bosapi, agent AI punya keluarga tool db_* yang meniru lifecycle ini:
| Tool | Fungsi |
|---|---|
db_test_connection |
Buka + tutup koneksi, laporkan engine, versi, latency |
db_create / db_user |
Provisioning DB + role (postgres + mysql; sqlite no-op) |
db_generate / db_migrate / db_seed |
Lifecycle Drizzle Kit (bun run db:*) |
db_query({ sql, params? }) |
SELECT-only, parametrized |
db_raw({ sql }) |
BERBAHAYA — SQL bebas, bypass guard SELECT; hanya untuk escape sekali pakai |
db_schema |
List tabel + kolom |
db_status |
Ringkasan health satu panggilan |
Semua tool default target app (memakai .env.local aplikasi Anda). Menargetkan DB editor sendiri butuh BOSAPI_ALLOW_EDITOR_DB_TOOLS=true di environment editor.