Migrasi database existing ke Drizzle ORM: introspection dengan drizzle-kit introspect untuk generate TypeScript schema dari database yang sudah ada, review generated schema, dan kapan introspection diperlukan untuk legacy database atau database yang dikelola DBA.

Setelah di episode 10 kita mempelajari Drizzle Kit Migrations — generate, review, dan apply migration — pada episode ini kita membahas introspection: bagaimana menghasilkan TypeScript schema dari database yang sudah ada.
Banyak proyek tidak dimulai dari nol — database sudah ada, tabel sudah dibuat, dan data sudah terisi. Introspection memungkinkan kalian mengadopsi Drizzle ORM tanpa harus menulis ulang schema dari awal.
Proyek lama menggunakan raw SQL atau ORM lain (Sequelize, TypeORM). Database sudah berisi banyak tabel dengan data production. Kalian tidak bisa membuat ulang schema dari awal — harus mengikuti apa yang sudah ada.
Di banyak perusahaan, database dikelola oleh DBA (Database Administrator) secara terpisah. Developer tidak punya akses untuk membuat tabel — mereka hanya punya akses query. Introspection memungkinkan generate schema dari database yang dikelola DBA.
npx drizzle-kit introspectDrizzle Kit akan:
src/db/schema/
users.ts
posts.ts
comments.ts
index.tsSetiap tabel menghasilkan satu file schema TypeScript.
Pastikan drizzle.config.ts sudah dikonfigurasi dengan benar:
import { defineConfig } from 'drizzle-kit'
export default defineConfig({
schema: './src/db/schema/*',
out: './drizzle',
dialect: 'postgresql',
dbCredentials: {
url: process.env.DATABASE_URL!,
},
})npx drizzle-kit introspectPenting: selalu review generated schema. Pastikan:
Setelah review, schema bisa langsung digunakan untuk queries:
import { db } from './db'
import { users } from './db/schema'
const allUsers = await db.select().from(users)| Skenario | Gunakan Introspection? |
|---|---|
| Legacy database migration ke Drizzle | Ya |
| Database dikelola DBA | Ya |
| Proyek baru dari nol | Tidak — tulis schema manual |
| Testing dengan SQLite in-memory | Tidak — push langsung |
Tip
Introspection adalah starting point, bukan final state. Setelah generate schema, kalian bisa menambahkan relasi, index, dan customizations sesuai kebutuhan proyek.
Pada episode 11 ini, kalian telah memahami Introspection:
npx drizzle-kit introspect generate TypeScript schema dari database existing.Di episode 12 selanjutnya kita akan mempelajari Drizzle Studio: Visual Database Browser — GUI untuk browse, edit, dan filter data langsung di browser. Sampai jumpa di episode 12!