Prisma ORM
Intro

Prisma ORM

Prisma ORM adalah ORM yang dibuat oleh Prisma. Prisma ORM ini memungkinkan kita untuk melakukan query ke database tanpa perlu menuliskan query SQL. Prisma ORM ini juga mendukung banyak database seperti MySQL, PostgreSQL, MongoDB, dan lain-lain.

Instalasi

Untuk menggunakan Prisma ORM, kita perlu menginstallnya terlebih dahulu. Untuk menginstall Prisma ORM, kita perlu menginstall package @prisma/client dengan perintah berikut:

npm install prisma -D
npm install @prisma/client

Setelah itu, kita perlu membuat file schema.prisma yang berisi definisi dari model-model yang akan kita gunakan. Untuk membuat file schema.prisma, kita perlu menuliskan perintah berikut:

npx prisma init

Setelah menjalankan perintah tersebut, kita akan melihat file schema.prisma di dalam folder/direktori prisma yang berisi definisi dari model-model yang akan kita gunakan. File schema.prisma ini akan digunakan oleh Prisma ORM untuk melakukan query ke database.

Instal Ekstensi

Instal ekstensi Visual Studio Code Prisma, untuk mempermudah kamu dalam menggunakan Prisma.

prisma-ext

Membuat Model

Setelah membuat file schema.prisma, kita perlu membuat model-model yang akan kita gunakan. Untuk membuat model, kita perlu menuliskan perintah berikut:

Contoh membuat model User dan Post:

schema.prisma
model User {
  id        Int       @id @default(autoincrement())
  name      String?
  email     String    @unique
  password  String
  posts     Post[]
  createdAt DateTime  @default(now())
  updatedAt DateTime  @updatedAt
}
 
model Post {
  id        Int       @id @default(autoincrement())
  title     String
  content   String?
  published Boolean   @default(false)
  author    User      @relation(fields: [authorId], references: [id])
  authorId  Int
  createdAt DateTime  @default(now())
  updatedAt DateTime  @updatedAt
}

Kita juga dapat menggunakan cuid() pada id. Dengan mengubah autoincrement() menjadi cuid()dan mengubah tipe data Int menjadi String.

CUID

cuid() mengembalikan sebuah string acak pendek dengan beberapa tindakan penangkal tabrakan. Aman digunakan sebagai id elemen HTML, dan pencarian catatan sisi server yang unik.

Referensi: cuid - github.com (opens in a new tab)

Contoh penggunaan cuid:

schema.prisma
model User {
  id        String    @id @default(cuid())
  name      String?
  email     String    @unique
  password  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
}

SQLite

Ada beberapa provider database yang digunakan untuk dapat menghubungkan Prisma ORM. Pada kasus kita kali ini kita akan menggunakan provider database SQLite (opens in a new tab).

Konektor sumber data SQLite menghubungkan Prisma ORM ke file database SQLite. File-file ini selalu berakhiran .db (contoh: dev.db).

Secara default, konektor SQLite berisi driver database yang bertanggung jawab untuk menghubungkan ke database kamu. Kamu dapat menggunakan driver adapter (opens in a new tab) (Preview) untuk menghubungkan ke database kamu menggunakan driver database JavaScript dari Prisma Client.

Untuk menyambung ke file database SQLite, kamu perlu mengonfigurasi blok datasource (opens in a new tab) dalam file skema (opens in a new tab) kamu:

schema.prisma
datasource db {
  provider = "sqlite"
  url      = "file:./dev.db"
}

Fields yang passed ke blok datasource adalah:

  • provider: Menentukan konektor datasource sqlite.
  • url: Menentukan Connection URL (opens in a new tab) untuk database SQLite. URL koneksi selalu dimulai dengan prefix file: dan kemudian berisi jalur file yang mengarah ke file database SQLite. Dalam kasus ini, file tersebut terletak di direktori yang sama dan disebut dev.db.

Referensi: Databases - SQLite (opens in a new tab)

Prisma Migrate

Setelah setup provider dan url database SQLite. Jalankan migrasi untuk membuat tabel database kamu dengan Prisma Migrate.

npx prisma migrate dev --name init

init adalah contoh pesan commit. Kamu dapat menggantinya dengan pesan commit yang lain, seperti: dev, db, dll.

npx prisma migrate dev --name dev

Prisma Migrate di atas hanya berlaku pada provider SQLite, jika ingin menggunakan pada provider lain seperti PostgreSQL gunakan perintah di bawah,

npx prisma db push

Setelah menjalankan perintah tersebut, kita akan melihat file migrations yang berisi definisi dari model-model yang akan kita gunakan. File migrations ini akan digunakan oleh Prisma ORM untuk melakukan query ke database.

Prisma Studio

Buka Prisma Studio untuk melihat data dari model-model yang telah kita buat.

Prisma ORM dilengkapi dengan GUI (Graphical User Interface) bawaan untuk melihat, mengedit, dan menghapus data dalam database kamu. Kamu dapat membukanya dengan menggunakan perintah berikut:

npx prisma studio

Kemudian, buka browser kamu dan ketikan http://localhost:5555 untuk melihat visual dari Prisma Studio.