DATABASE-ORM DOCS
SCHEMA-DATASOURCE
Name
Description
Example
Output
datasource dbDescription: Mendefinisikan sumber database yang digunakan.
Example:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}Output: Koneksi postgresql
datasource dbMendefinisikan sumber database yang digunakan.
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}Koneksi postgresql
provider (postgresql)Description: Provider untuk PostgreSQL.
Example:
provider = "postgresql"
Output: PostgreSQL
provider (postgresql)Provider untuk PostgreSQL.
provider = "postgresql"
PostgreSQL
provider (mysql)Description: Provider untuk MySQL.
Example:
provider = "mysql"
Output: MySQL
provider (mysql)Provider untuk MySQL.
provider = "mysql"
MySQL
provider (sqlite)Description: Provider untuk SQLite.
Example:
provider = "sqlite"
Output: SQLite
provider (sqlite)Provider untuk SQLite.
provider = "sqlite"
SQLite
provider (sqlserver)Description: Provider untuk SQL Server.
Example:
provider = "sqlserver"
Output: SQL Server
provider (sqlserver)Provider untuk SQL Server.
provider = "sqlserver"
SQL Server
provider (cockroachdb)Description: Provider untuk CockroachDB.
Example:
provider = "cockroachdb"
Output: CockroachDB
provider (cockroachdb)Provider untuk CockroachDB.
provider = "cockroachdb"
CockroachDB
provider (mongodb)Description: Provider untuk MongoDB (preview).
Example:
provider = "mongodb"
Output: MongoDB
provider (mongodb)Provider untuk MongoDB (preview).
provider = "mongodb"
MongoDB
url (env)Description: Mengambil URL koneksi dari environment variable.
Example:
url = env("DATABASE_URL")Output: process.env.DATABASE_URL
url (env)Mengambil URL koneksi dari environment variable.
url = env("DATABASE_URL")process.env.DATABASE_URL
directUrlDescription: URL koneksi langsung (untuk migrasi).
Example:
directUrl = env("DIRECT_URL")Output: Koneksi langsung
directUrlURL koneksi langsung (untuk migrasi).
directUrl = env("DIRECT_URL")Koneksi langsung
shadowDatabaseUrlDescription: URL database bayangan untuk migrasi (cloud).
Example:
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")Output: Database bayangan
shadowDatabaseUrlURL database bayangan untuk migrasi (cloud).
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")Database bayangan
SCHEMA-GENERATOR
Name
Description
Example
Output
generator clientDescription: Menghasilkan Prisma Client untuk digunakan di kode.
Example:
generator client {
provider = "prisma-client-js"
}Output: Client JS
generator clientMenghasilkan Prisma Client untuk digunakan di kode.
generator client {
provider = "prisma-client-js"
}Client JS
provider = "prisma-client-js"Description: Provider default untuk JavaScript/TypeScript.
Example:
provider = "prisma-client-js"
Output: JavaScript Client
provider = "prisma-client-js"Provider default untuk JavaScript/TypeScript.
provider = "prisma-client-js"
JavaScript Client
outputDescription: Direktori output untuk client yang dihasilkan.
Example:
generator client {
provider = "prisma-client-js"
output = "./generated/prisma"
}Output: Folder khusus client
outputDirektori output untuk client yang dihasilkan.
generator client {
provider = "prisma-client-js"
output = "./generated/prisma"
}Folder khusus client
binaryTargetsDescription: Menentukan binary target (misal native, debian).
Example:
binaryTargets = ["native"]
Output: Binary spesifik
binaryTargetsMenentukan binary target (misal native, debian).
binaryTargets = ["native"]
Binary spesifik
previewFeaturesDescription: Mengaktifkan fitur pratinjau.
Example:
previewFeatures = ["fullTextSearch"]
Output: Fitur eksperimental
previewFeaturesMengaktifkan fitur pratinjau.
previewFeatures = ["fullTextSearch"]
Fitur eksperimental
SCHEMA-MODEL
Name
Description
Example
Output
modelDescription: Mendefinisikan sebuah model (tabel).
Example:
model User {
id Int @id @default(autoincrement())
name String
email String @unique
}Output: Tabel User
modelMendefinisikan sebuah model (tabel).
model User {
id Int @id @default(autoincrement())
name String
email String @unique
}Tabel User
field type (Int, String, Boolean, DateTime, Float, BigInt, Json, Bytes)Description: Tipe data untuk field.
Example:
age Int bio String? data Json
Output: Tipe data
field type (Int, String, Boolean, DateTime, Float, BigInt, Json, Bytes)Tipe data untuk field.
age Int bio String? data Json
Tipe data
? (optional)Description: Field boleh null.
Example:
name String?
Output: Nullable
? (optional)Field boleh null.
name String?
Nullable
@idDescription: Primary key.
Example:
id Int @id
Output: Primary key
@idPrimary key.
id Int @id
Primary key
@defaultDescription: Nilai default untuk field.
Example:
createdAt DateTime @default(now())
Output: now()
@defaultNilai default untuk field.
createdAt DateTime @default(now())
now()
@uniqueDescription: Nilai unik.
Example:
email String @unique
Output: Unique constraint
@uniqueNilai unik.
email String @unique
Unique constraint
@updatedAtDescription: Otomatis diperbarui saat record diupdate.
Example:
updatedAt DateTime @updatedAt
Output: Timestamp update
@updatedAtOtomatis diperbarui saat record diupdate.
updatedAt DateTime @updatedAt
Timestamp update
@relationDescription: Mendefinisikan relasi antar model.
Example:
posts Post[] @relation("UserPosts")Output: Relasi one-to-many
@relationMendefinisikan relasi antar model.
posts Post[] @relation("UserPosts")Relasi one-to-many
@map / @@mapDescription: Memetakan field/model ke nama kolom/tabel khusus.
Example:
@map("first_name") firstName String
@@map("users")Output: Nama asli di DB
@map / @@mapMemetakan field/model ke nama kolom/tabel khusus.
@map("first_name") firstName String
@@map("users")Nama asli di DB
enumDescription: Mendefinisikan tipe enum.
Example:
enum Role {
ADMIN
USER
}Output: Enum Role
enumMendefinisikan tipe enum.
enum Role {
ADMIN
USER
}Enum Role
@@id (composite primary key)Description: Primary key gabungan dari beberapa field.
Example:
@@id([authorId, postId])
Output: Composite key
@@id (composite primary key)Primary key gabungan dari beberapa field.
@@id([authorId, postId])
Composite key
@@unique (composite unique)Description: Unique constraint gabungan.
Example:
@@unique([title, authorId])
Output: Composite unique
@@unique (composite unique)Unique constraint gabungan.
@@unique([title, authorId])
Composite unique
@@indexDescription: Membuat index biasa.
Example:
@@index([title])
Output: Index pada title
@@indexMembuat index biasa.
@@index([title])
Index pada title
@@fulltext (MySQL/Postgres)Description: Full-text search index (MySQL/Postgres).
Example:
@@fulltext([title, content])
Output: Fulltext index
@@fulltext (MySQL/Postgres)Full-text search index (MySQL/Postgres).
@@fulltext([title, content])
Fulltext index
CLI
Name
Description
Example
Output
npx prisma initDescription: Inisialisasi Prisma di proyek, membuat folder prisma dan schema.prisma.
Example:
npx prisma init
Output: prisma/schema.prisma & .env
npx prisma initInisialisasi Prisma di proyek, membuat folder prisma dan schema.prisma.
npx prisma init
prisma/schema.prisma & .env
npx prisma generateDescription: Menghasilkan Prisma Client berdasarkan schema.
Example:
npx prisma generate
Output: node_modules/.prisma/client
npx prisma generateMenghasilkan Prisma Client berdasarkan schema.
npx prisma generate
node_modules/.prisma/client
npx prisma db pushDescription: Menerapkan schema langsung ke database tanpa migrasi (dev).
Example:
npx prisma db push
Output: Schema tersinkron
npx prisma db pushMenerapkan schema langsung ke database tanpa migrasi (dev).
npx prisma db push
Schema tersinkron
npx prisma migrate devDescription: Membuat migrasi dari perubahan schema dan menerapkannya.
Example:
npx prisma migrate dev --name init
Output: Folder prisma/migrations & tabel terbuat
npx prisma migrate devMembuat migrasi dari perubahan schema dan menerapkannya.
npx prisma migrate dev --name init
Folder prisma/migrations & tabel terbuat
npx prisma migrate deployDescription: Menerapkan migrasi yang ada ke database (production).
Example:
npx prisma migrate deploy
Output: Migrasi dijalankan
npx prisma migrate deployMenerapkan migrasi yang ada ke database (production).
npx prisma migrate deploy
Migrasi dijalankan
npx prisma migrate resetDescription: Menghapus database dan menerapkan ulang semua migrasi.
Example:
npx prisma migrate reset
Output: Database direset
npx prisma migrate resetMenghapus database dan menerapkan ulang semua migrasi.
npx prisma migrate reset
Database direset
npx prisma migrate statusDescription: Melihat status migrasi.
Example:
npx prisma migrate status
Output: Daftar migrasi
npx prisma migrate statusMelihat status migrasi.
npx prisma migrate status
Daftar migrasi
npx prisma studioDescription: Membuka GUI untuk melihat dan mengedit data.
Example:
npx prisma studio
Output: localhost:5555
npx prisma studioMembuka GUI untuk melihat dan mengedit data.
npx prisma studio
localhost:5555
npx prisma formatDescription: Merapikan schema.prisma.
Example:
npx prisma format
Output: Schema terformat
npx prisma formatMerapikan schema.prisma.
npx prisma format
Schema terformat
npx prisma validateDescription: Memvalidasi schema.
Example:
npx prisma validate
Output: Schema valid
npx prisma validateMemvalidasi schema.
npx prisma validate
Schema valid
npx prisma db seedDescription: Menjalankan seeder yang didefinisikan di package.json.
Example:
npx prisma db seed
Output: Data awal terisi
npx prisma db seedMenjalankan seeder yang didefinisikan di package.json.
npx prisma db seed
Data awal terisi
CLIENT-BASIC
Name
Description
Example
Output
import { PrismaClient }Description: Mengimpor PrismaClient.
Example:
import { PrismaClient } from '@prisma/client'Output: PrismaClient
import { PrismaClient }Mengimpor PrismaClient.
import { PrismaClient } from '@prisma/client'PrismaClient
new PrismaClient()Description: Membuat instance PrismaClient.
Example:
const prisma = new PrismaClient()
Output: Instance client
new PrismaClient()Membuat instance PrismaClient.
const prisma = new PrismaClient()
Instance client
prisma.$connect()Description: Membuka koneksi ke database (jarang diperlukan).
Example:
await prisma.$connect()
Output: Terkoneksi
prisma.$connect()Membuka koneksi ke database (jarang diperlukan).
await prisma.$connect()
Terkoneksi
prisma.$disconnect()Description: Menutup koneksi.
Example:
await prisma.$disconnect()
Output: Terputus
prisma.$disconnect()Menutup koneksi.
await prisma.$disconnect()
Terputus
CLIENT-QUERIES
Name
Description
Example
Output
findMany()Description: Mengambil semua record.
Example:
const users = await prisma.user.findMany()
Output: [{...}, {...}]
findMany()Mengambil semua record.
const users = await prisma.user.findMany()
[{...}, {...}]
findMany(where)Description: Mengambil record dengan kondisi.
Example:
await prisma.user.findMany({ where: { name: 'Ridho' } })Output: [{id:1, name:'Ridho'}]
findMany(where)Mengambil record dengan kondisi.
await prisma.user.findMany({ where: { name: 'Ridho' } })[{id:1, name:'Ridho'}]
findUnique()Description: Mengambil satu record berdasarkan primary key/unique field.
Example:
await prisma.user.findUnique({ where: { id: 1 } })Output: { id:1, name:'Ridho' }
findUnique()Mengambil satu record berdasarkan primary key/unique field.
await prisma.user.findUnique({ where: { id: 1 } }){ id:1, name:'Ridho' }
findFirst()Description: Mengambil record pertama yang cocok (bisa tanpa unique).
Example:
await prisma.user.findFirst({ where: { age: { gte: 18 } } })Output: { id:2, name:'Adult' }
findFirst()Mengambil record pertama yang cocok (bisa tanpa unique).
await prisma.user.findFirst({ where: { age: { gte: 18 } } }){ id:2, name:'Adult' }
findFirstOrThrow()Description: Sama seperti findFirst tapi error jika tidak ditemukan.
Example:
await prisma.user.findFirstOrThrow({ where: { id: 99 } })Output: NotFoundError jika tidak ada
findFirstOrThrow()Sama seperti findFirst tapi error jika tidak ditemukan.
await prisma.user.findFirstOrThrow({ where: { id: 99 } })NotFoundError jika tidak ada
findUniqueOrThrow()Description: Sama seperti findUnique tapi error jika tidak ditemukan.
Example:
await prisma.user.findUniqueOrThrow({ where: { id: 99 } })Output: NotFoundError jika tidak ada
findUniqueOrThrow()Sama seperti findUnique tapi error jika tidak ditemukan.
await prisma.user.findUniqueOrThrow({ where: { id: 99 } })NotFoundError jika tidak ada
CLIENT-MUTATIONS
Name
Description
Example
Output
create()Description: Membuat record baru.
Example:
await prisma.user.create({ data: { name: 'Baru', email: 'baru@mail.com' } })Output: { id:3, name:'Baru', ... }
create()Membuat record baru.
await prisma.user.create({ data: { name: 'Baru', email: 'baru@mail.com' } }){ id:3, name:'Baru', ... }
createMany()Description: Membuat banyak record sekaligus.
Example:
await prisma.user.createMany({ data: [{ name: 'A' }, { name: 'B' }] })Output: { count: 2 }
createMany()Membuat banyak record sekaligus.
await prisma.user.createMany({ data: [{ name: 'A' }, { name: 'B' }] }){ count: 2 }
update()Description: Memperbarui satu record.
Example:
await prisma.user.update({ where: { id: 1 }, data: { name: 'Updated' } })Output: { id:1, name:'Updated' }
update()Memperbarui satu record.
await prisma.user.update({ where: { id: 1 }, data: { name: 'Updated' } }){ id:1, name:'Updated' }
updateMany()Description: Memperbarui banyak record.
Example:
await prisma.user.updateMany({ where: { age: null }, data: { age: 0 } })Output: { count: 5 }
updateMany()Memperbarui banyak record.
await prisma.user.updateMany({ where: { age: null }, data: { age: 0 } }){ count: 5 }
upsert()Description: Update jika ada, create jika tidak.
Example:
await prisma.user.upsert({ where: { email: 'x@mail.com' }, update: { name: 'X' }, create: { name: 'X', email: 'x@mail.com' } })Output: { id:... }
upsert()Update jika ada, create jika tidak.
await prisma.user.upsert({ where: { email: 'x@mail.com' }, update: { name: 'X' }, create: { name: 'X', email: 'x@mail.com' } }){ id:... }
delete()Description: Menghapus satu record.
Example:
await prisma.user.delete({ where: { id: 1 } })Output: { id:1, ... }
delete()Menghapus satu record.
await prisma.user.delete({ where: { id: 1 } }){ id:1, ... }
deleteMany()Description: Menghapus banyak record.
Example:
await prisma.user.deleteMany({ where: { role: 'INACTIVE' } })Output: { count: 10 }
deleteMany()Menghapus banyak record.
await prisma.user.deleteMany({ where: { role: 'INACTIVE' } }){ count: 10 }
FILTERING
Name
Description
Example
Output
equalsDescription: Sama dengan.
Example:
{ age: { equals: 25 } }Output: age = 25
equalsSama dengan.
{ age: { equals: 25 } }age = 25
notDescription: Bukan nilai tertentu.
Example:
{ name: { not: 'Ridho' } }Output: name != 'Ridho'
notBukan nilai tertentu.
{ name: { not: 'Ridho' } }name != 'Ridho'
inDescription: Termasuk dalam daftar.
Example:
{ id: { in: [1,2,3] } }Output: id IN (1,2,3)
inTermasuk dalam daftar.
{ id: { in: [1,2,3] } }id IN (1,2,3)
notInDescription: Tidak termasuk dalam daftar.
Example:
{ id: { notIn: [1,2] } }Output: id NOT IN (1,2)
notInTidak termasuk dalam daftar.
{ id: { notIn: [1,2] } }id NOT IN (1,2)
lt / lteDescription: Kurang dari / kurang dari sama dengan.
Example:
{ age: { lt: 30 } }Output: age < 30
lt / lteKurang dari / kurang dari sama dengan.
{ age: { lt: 30 } }age < 30
gt / gteDescription: Lebih dari / lebih dari sama dengan.
Example:
{ age: { gte: 18 } }Output: age >= 18
gt / gteLebih dari / lebih dari sama dengan.
{ age: { gte: 18 } }age >= 18
containsDescription: Mengandung substring (case-sensitive).
Example:
{ name: { contains: 'idh' } }Output: LIKE '%idh%'
containsMengandung substring (case-sensitive).
{ name: { contains: 'idh' } }LIKE '%idh%'
startsWith / endsWithDescription: Diawali/diakhiri substring.
Example:
{ email: { endsWith: '@mail.com' } }Output: LIKE '%@mail.com'
startsWith / endsWithDiawali/diakhiri substring.
{ email: { endsWith: '@mail.com' } }LIKE '%@mail.com'
modeDescription: Mengatur case-sensitivity (default: sensitive).
Example:
{ name: { contains: 'idh', mode: 'insensitive' } }Output: ILIKE '%idh%' (PostgreSQL)
modeMengatur case-sensitivity (default: sensitive).
{ name: { contains: 'idh', mode: 'insensitive' } }ILIKE '%idh%' (PostgreSQL)
ANDDescription: Semua kondisi harus terpenuhi.
Example:
{ AND: [{ age: { gte: 18 } }, { age: { lt: 60 } }] }Output: age >= 18 AND age < 60
ANDSemua kondisi harus terpenuhi.
{ AND: [{ age: { gte: 18 } }, { age: { lt: 60 } }] }age >= 18 AND age < 60
ORDescription: Salah satu kondisi terpenuhi.
Example:
{ OR: [{ name: 'Ridho' }, { name: 'Khalid' }] }Output: name = 'Ridho' OR name = 'Khalid'
ORSalah satu kondisi terpenuhi.
{ OR: [{ name: 'Ridho' }, { name: 'Khalid' }] }name = 'Ridho' OR name = 'Khalid'
NOTDescription: Negasi kondisi.
Example:
{ NOT: { age: { lt: 18 } } }Output: NOT age < 18
NOTNegasi kondisi.
{ NOT: { age: { lt: 18 } } }NOT age < 18
SORTING-PAGINATION
Name
Description
Example
Output
orderByDescription: Mengurutkan hasil.
Example:
orderBy: { createdAt: 'desc' }Output: Terbaru dulu
orderByMengurutkan hasil.
orderBy: { createdAt: 'desc' }Terbaru dulu
takeDescription: Membatasi jumlah hasil (LIMIT).
Example:
take: 5
Output: 5 record
takeMembatasi jumlah hasil (LIMIT).
take: 5
5 record
skipDescription: Melewati sejumlah record (OFFSET).
Example:
skip: 10
Output: Lewati 10
skipMelewati sejumlah record (OFFSET).
skip: 10
Lewati 10
cursorDescription: Pagination berbasis cursor (lebih efisien dari offset).
Example:
cursor: { id: 10 }, take: 5Output: Mulai setelah id 10
cursorPagination berbasis cursor (lebih efisien dari offset).
cursor: { id: 10 }, take: 5Mulai setelah id 10
distinctDescription: Menghilangkan duplikat pada field tertentu.
Example:
distinct: ['city']
Output: Kota unik
distinctMenghilangkan duplikat pada field tertentu.
distinct: ['city']
Kota unik
AGGREGASI
Name
Description
Example
Output
count()Description: Menghitung jumlah record.
Example:
await prisma.user.count({ where: { active: true } })Output: 42
count()Menghitung jumlah record.
await prisma.user.count({ where: { active: true } })42
aggregate()Description: Agregasi (sum, avg, min, max, count).
Example:
await prisma.product.aggregate({ _avg: { price: true }, _max: { price: true } })Output: { _avg: { price: 150 }, _max: { price: 500 } }
aggregate()Agregasi (sum, avg, min, max, count).
await prisma.product.aggregate({ _avg: { price: true }, _max: { price: true } }){ _avg: { price: 150 }, _max: { price: 500 } }
groupBy()Description: Mengelompokkan dan agregasi per kelompok.
Example:
await prisma.order.groupBy({ by: ['userId'], _sum: { amount: true } })Output: [{ userId: 1, _sum: { amount: 250 } }]
groupBy()Mengelompokkan dan agregasi per kelompok.
await prisma.order.groupBy({ by: ['userId'], _sum: { amount: true } })[{ userId: 1, _sum: { amount: 250 } }]
RELATIONS
Name
Description
Example
Output
includeDescription: Menyertakan relasi dalam hasil (JOIN).
Example:
await prisma.user.findMany({ include: { posts: true } })Output: { id:1, posts: [...] }
includeMenyertakan relasi dalam hasil (JOIN).
await prisma.user.findMany({ include: { posts: true } }){ id:1, posts: [...] }
selectDescription: Memilih field tertentu, termasuk relasi.
Example:
await prisma.user.findMany({ select: { id: true, name: true, posts: { select: { title: true } } } })Output: { id, name, posts: [{title}] }
selectMemilih field tertentu, termasuk relasi.
await prisma.user.findMany({ select: { id: true, name: true, posts: { select: { title: true } } } }){ id, name, posts: [{title}] }
nested createDescription: Membuat record relasi sekaligus.
Example:
await prisma.user.create({ data: { name: 'Ridho', posts: { create: [{ title: 'Post 1' }] } } })Output: User + post terbuat
nested createMembuat record relasi sekaligus.
await prisma.user.create({ data: { name: 'Ridho', posts: { create: [{ title: 'Post 1' }] } } })User + post terbuat
connectDescription: Menghubungkan ke record yang sudah ada (one-to-one/many).
Example:
await prisma.post.create({ data: { title: 'Baru', author: { connect: { id: 1 } } } })Output: Post terhubung ke author 1
connectMenghubungkan ke record yang sudah ada (one-to-one/many).
await prisma.post.create({ data: { title: 'Baru', author: { connect: { id: 1 } } } })Post terhubung ke author 1
disconnectDescription: Memutus relasi (hanya untuk relasi opsional one-to-one/one-to-many).
Example:
await prisma.user.update({ where: { id: 1 }, data: { profile: { disconnect: true } } })Output: Relasi terputus
disconnectMemutus relasi (hanya untuk relasi opsional one-to-one/one-to-many).
await prisma.user.update({ where: { id: 1 }, data: { profile: { disconnect: true } } })Relasi terputus
setDescription: Mengatur ulang relasi (many-to-many).
Example:
await prisma.post.update({ where: { id: 1 }, data: { categories: { set: [{ id: 2 }] } } })Output: Kategori diatur
setMengatur ulang relasi (many-to-many).
await prisma.post.update({ where: { id: 1 }, data: { categories: { set: [{ id: 2 }] } } })Kategori diatur
connectOrCreateDescription: Hubungkan jika ada, jika tidak buat baru.
Example:
await prisma.post.create({ data: { title: 'A', author: { connectOrCreate: { where: { email: 'x@mail.com' }, create: { name: 'X', email: 'x@mail.com' } } } } })Output: Author terhubung atau baru
connectOrCreateHubungkan jika ada, jika tidak buat baru.
await prisma.post.create({ data: { title: 'A', author: { connectOrCreate: { where: { email: 'x@mail.com' }, create: { name: 'X', email: 'x@mail.com' } } } } })Author terhubung atau baru
upsert relasiDescription: Upsert pada nested relation.
Example:
await prisma.user.update({ where: { id: 1 }, data: { posts: { upsert: { where: { id: 2 }, update: { title: 'Updated' }, create: { title: 'New' } } } } })Output: Post diupdate atau dibuat
upsert relasiUpsert pada nested relation.
await prisma.user.update({ where: { id: 1 }, data: { posts: { upsert: { where: { id: 2 }, update: { title: 'Updated' }, create: { title: 'New' } } } } })Post diupdate atau dibuat
delete relasiDescription: Menghapus nested record.
Example:
await prisma.user.update({ where: { id: 1 }, data: { posts: { delete: { id: 2 } } } })Output: Post dihapus
delete relasiMenghapus nested record.
await prisma.user.update({ where: { id: 1 }, data: { posts: { delete: { id: 2 } } } })Post dihapus
RAW-QUERIES
Name
Description
Example
Output
$queryRawDescription: Menjalankan query SQL mentah (SELECT).
Example:
await prisma.$queryRaw`SELECT * FROM users WHERE id = ${id}`Output: Array hasil query
$queryRawMenjalankan query SQL mentah (SELECT).
await prisma.$queryRaw`SELECT * FROM users WHERE id = ${id}`Array hasil query
$executeRawDescription: Menjalankan perintah SQL mentah (INSERT/UPDATE/DELETE).
Example:
await prisma.$executeRaw`UPDATE users SET name = ${name} WHERE id = ${id}`Output: Jumlah baris terpengaruh
$executeRawMenjalankan perintah SQL mentah (INSERT/UPDATE/DELETE).
await prisma.$executeRaw`UPDATE users SET name = ${name} WHERE id = ${id}`Jumlah baris terpengaruh
TRANSACTIONS
Name
Description
Example
Output
$transaction (interactive)Description: Transaksi interaktif, bisa melakukan operasi berurutan dengan logika JavaScript.
Example:
await prisma.$transaction(async (tx) => {
const user = await tx.user.create({ data: { ... } });
await tx.post.create({ data: { ... } });
})Output: Semua berhasil atau rollback
$transaction (interactive)Transaksi interaktif, bisa melakukan operasi berurutan dengan logika JavaScript.
await prisma.$transaction(async (tx) => {
const user = await tx.user.create({ data: { ... } });
await tx.post.create({ data: { ... } });
})Semua berhasil atau rollback
$transaction (batch)Description: Transaksi batch untuk operasi independen secara paralel.
Example:
await prisma.$transaction([
prisma.user.create({ data: { ... } }),
prisma.post.create({ data: { ... } })
])Output: Array hasil
$transaction (batch)Transaksi batch untuk operasi independen secara paralel.
await prisma.$transaction([
prisma.user.create({ data: { ... } }),
prisma.post.create({ data: { ... } })
])Array hasil
MIDDLEWARE
Name
Description
Example
Output
$useDescription: Menambahkan middleware untuk modifikasi query/logging.
Example:
prisma.$use(async (params, next) => {
console.log(params.action);
return next(params);
})Output: Logging setiap query
$useMenambahkan middleware untuk modifikasi query/logging.
prisma.$use(async (params, next) => {
console.log(params.action);
return next(params);
})Logging setiap query
ADVANCED
Name
Description
Example
Output
$extendsDescription: Memperluas fungsionalitas Prisma Client (custom method).
Example:
const prismaWithUser = prisma.$extends({
model: { user: { myCustomFind: async () => { ... } } }
})Output: Client kustom
$extendsMemperluas fungsionalitas Prisma Client (custom method).
const prismaWithUser = prisma.$extends({
model: { user: { myCustomFind: async () => { ... } } }
})Client kustom
$onDescription: Mendengarkan event Prisma Client (seperti query, error).
Example:
prisma.$on('query', (e) => { console.log(e.query) })Output: Setiap query tercatat
$onMendengarkan event Prisma Client (seperti query, error).
prisma.$on('query', (e) => { console.log(e.query) })Setiap query tercatat
soft deletesDescription: Menghapus dengan menandai deletedAt alih-alih delete sebenarnya (via middleware).
Example:
prisma.$use(async (params, next) => { if (params.action === 'delete') { ... } })Output: Soft delete
soft deletesMenghapus dengan menandai deletedAt alih-alih delete sebenarnya (via middleware).
prisma.$use(async (params, next) => { if (params.action === 'delete') { ... } })Soft delete
connection poolingDescription: Menggunakan pgBouncer atau pool bawaan untuk production.
Example:
datasource db { ... } dan atur connection_limit di connection stringOutput: Koneksi terbatas
connection poolingMenggunakan pgBouncer atau pool bawaan untuk production.
datasource db { ... } dan atur connection_limit di connection stringKoneksi terbatas
query loggingDescription: Mengaktifkan log untuk debugging.
Example:
const prisma = new PrismaClient({ log: ['query', 'info', 'warn', 'error'] })Output: Log di konsol
query loggingMengaktifkan log untuk debugging.
const prisma = new PrismaClient({ log: ['query', 'info', 'warn', 'error'] })Log di konsol