Prisma Get Started: Instalasi, Skema, Migrasi, dan Query Dasar

Mulai dari nol dengan Prisma: inisialisasi proyek, definisi skema, migrasi skema ke database, dan menjalankan kueri dasar menggunakan Prisma Client. Panduan ini memilih jalur cepat (SQLite) serta opsi PostgreSQL untuk produksi.

Prisma adalah ORM modern untuk ekosistem JavaScript/TypeScript. Anda mendeskripsikan model data pada schema.prisma, melakukan migrasi skema ke database, lalu memakai Prisma Client (type-safe) untuk membaca/menulis data dari kode aplikasi. Pada bagian akhir, Anda juga akan mencoba Prisma Studio untuk menjelajah data secara visual selama pengembangan.

Catatan: Jalur tercepat memakai SQLite (tanpa setup server DB). Untuk produksi, gunakan PostgreSQL/MySQL dsb.—prinsipnya sama.

Prasyarat

  • Node.js & npm terpasang.
  • Koneksi internet untuk mengunduh dependensi.
  • Terminal/PowerShell (boleh WSL/macOS/Linux/Windows).

Inisialisasi Proyek & Prisma

Langkah berikut membuat proyek Node minimal, memasang Prisma dan Prisma Client, lalu melakukan inisialisasi.

mkdir prisma-hello
cd prisma-hello
npm init -y
npm install prisma @prisma/client
npx prisma init --datasource-provider sqlite

Perintah di atas menghasilkan folder prisma/ dan berkas .env dengan koneksi SQLite default (file:./dev.db), serta kerangka schema.prisma.

Menyusun Skema (schema.prisma)

Kita buat model sederhana: User dan Post (relasi satu->banyak). Simpan isi berikut ke prisma/schema.prisma.

File: prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL") // default: file:./dev.db
}

model User {
  id        String   @id @default(cuid())
  email     String   @unique
  name      String
  posts     Post[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

model Post {
  id        String   @id @default(cuid())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  @@index([authorId], map: "idx_post_author")
}

Migrasi Skema ke Database

Jalankan migrasi untuk menyinkronkan skema ke database dan mengenerate Prisma Client.

npx prisma migrate dev --name init_schema

Perintah ini membuat folder prisma/migrations/ berisi SQL yang diterapkan ke database lokal. Setelah sukses, Prisma Client siap dipakai.

Query Dasar dengan Prisma Client

Buat berkas src/app.ts, lalu isi dengan contoh CRUD sederhana berikut:

File: src/app.ts
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();

async function main() {
  // Buat user
  const alice = await prisma.user.create({
    data: { email: "alice@example.com", name: "Alice" },
  });

  // Buat beberapa post milik Alice
  await prisma.post.createMany({
    data: [
      { title: "Halo Prisma", content: "Memulai dengan Prisma.", authorId: alice.id, published: true },
      { title: "Konsep Skema", content: "Model, relasi, migrasi.", authorId: alice.id }
    ]
  });

  // Baca post terbit terbaru
  const recent = await prisma.post.findMany({
    where: { published: true },
    orderBy: { createdAt: "desc" },
    take: 10,
    include: { author: { select: { email: true, name: true } } }
  });

  console.log("Post terbit:", recent);

  // Update satu post
  const first = recent[0];
  if (first) {
    const updated = await prisma.post.update({
      where: { id: first.id },
      data: { title: first.title + " (diperbarui)" }
    });
    console.log("Diupdate:", updated.id);
  }

  // Hapus post yang belum diterbitkan
  const removed = await prisma.post.deleteMany({ where: { published: false } });
  console.log("Dihapus:", removed.count, "post draft");
}

main()
  .catch((e) => { console.error(e); process.exit(1); })
  .finally(async () => { await prisma.$disconnect(); });

Jalankan contoh di atas:

npm install -D typescript ts-node
npx ts-node src/app.ts

Mengecek Data via Prisma Studio

Selama pengembangan, Anda bisa mengecek isi tabel melalui antarmuka visual berikut.

npx prisma studio
Keamanan: Prisma Studio ditujukan untuk lingkungan lokal/pengembangan. Jangan mempublikasikannya ke internet publik.

Opsi Produksi (PostgreSQL)

Untuk produksi, ubah datasource menjadi postgresql dan sesuaikan .env. Berikut contoh singkat:

File: prisma/schema.prisma (cuplikan)
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}
File: .env (contoh)
DATABASE_URL="postgresql://USER:PASS@HOST:5432/DBNAME?schema=public"

npx prisma migrate dev --name init_pg

Langkah query dan Studio sama seperti pada SQLite. Di tahap produksi, pertimbangkan connection pooling (mis. pgbouncer), indeks yang tepat, serta strategi backup/restore.

Troubleshooting Ringkas

  • Gagal konek DB — Periksa DATABASE_URL, hak akses jaringan, dan status layanan DB.
  • Migrasi gagal — Tinjau folder prisma/migrations/, pastikan skema konsisten; jalankan ulang setelah koreksi.
  • Type error saat kueri — Pastikan @prisma/client terpasang dan client telah digenerate (terjadi otomatis saat install).
  • Studio tidak muncul — Pastikan port tidak bentrok; coba parametrik --port (mis. npx prisma studio --port 5555).

Kesimpulan

Itu saja! Anda telah: inisialisasi proyek, menulis skema, menjalankan migrasi, menulis kueri CRUD, dan membuka Studio. Selanjutnya, Anda bisa menambah relasi lebih kompleks, menulis seeding, serta mengintegrasikan dengan framework favorit (Express/Next/Nest). Prisma menjaga konsistensi tipe dari skema hingga kode—kombinasi yang menyenangkan untuk tim modern.

Sumber/Referensi


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Share the Post:

Related Posts