Panduan Lengkap Mastering Prisma ORM dengan Claude Code
Panduan komprehensif tentang mastering prisma orm menggunakan Claude Code dengan contoh praktis dan best practices.
Prisma ORM
Prisma ORM TypeScript untuk 次世代ORM.type safetyなdatabaseアクセス、直感的なスキーマdefinisi、自動マイグレーション penyediaan.Claude Code dan 組み合わせれば、database設計 dari implementasiま efisien 進められ.
Desain Skema
// prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id String @id @default(cuid())
email String @unique
name String
avatar String?
posts Post[]
comments Comment[]
profile Profile?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([email])
}
model Profile {
id String @id @default(cuid())
bio String?
url String?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
userId String @unique
}
model Post {
id String @id @default(cuid())
title String
content String
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId String
categories Category[]
comments Comment[]
publishedAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([authorId])
@@index([published, publishedAt])
}
model Category {
id String @id @default(cuid())
name String @unique
slug String @unique
posts Post[]
}
model Comment {
id String @id @default(cuid())
content String
author User @relation(fields: [authorId], references: [id])
authorId String
post Post @relation(fields: [postId], references: [id], onDelete: Cascade)
postId String
createdAt DateTime @default(now())
@@index([postId])
}
Operasi CRUD
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
// pembuatan
async function createPost(data: {
title: string;
content: string;
authorId: string;
categoryIds: string[];
}) {
return prisma.post.create({
data: {
title: data.title,
content: data.content,
author: { connect: { id: data.authorId } },
categories: {
connect: data.categoryIds.map((id) => ({ id })),
},
},
include: {
author: { select: { id: true, name: true } },
categories: true,
},
});
}
// pencarian(pagination付き)
async function getPosts(params: {
page?: number;
perPage?: number;
category?: string;
search?: string;
}) {
const { page = 1, perPage = 20, category, search } = params;
const where = {
published: true,
...(category && {
categories: { some: { slug: category } },
}),
...(search && {
OR: [
{ title: { contains: search, mode: "insensitive" as const } },
{ content: { contains: search, mode: "insensitive" as const } },
],
}),
};
const [posts, total] = await Promise.all([
prisma.post.findMany({
where,
skip: (page - 1) * perPage,
take: perPage,
orderBy: { publishedAt: "desc" },
include: {
author: { select: { id: true, name: true, avatar: true } },
categories: true,
_count: { select: { comments: true } },
},
}),
prisma.post.count({ where }),
]);
return {
posts,
pagination: {
total,
page,
perPage,
totalPages: Math.ceil(total / perPage),
},
};
}
トランザクション
async function publishPost(postId: string) {
return prisma.$transaction(async (tx) => {
const post = await tx.post.findUnique({
where: { id: postId },
});
if (!post) throw new Error("Post not found");
if (post.published) throw new Error("Already published");
const updated = await tx.post.update({
where: { id: postId },
data: {
published: true,
publishedAt: new Date(),
},
});
// notifikasi pembuatan
await tx.notification.create({
data: {
type: "POST_PUBLISHED",
message: `「${post.title}」 publikasiされま`,
userId: post.authorId,
},
});
return updated;
});
}
Migrasi
# スキーマ変更後のマイグレーション
npx prisma migrate dev --name add_profile_table
# 本番環境へのデプロイ
npx prisma migrate deploy
# スキーマの同期(開発用)
npx prisma db push
Prompt untuk Pemanfaatan Claude Code
Prisma 使ったpengembangan Claude Code 依頼 例.dasar的な使い方 Claude Code入門panduan、他 ORM dan 比較 Drizzle ORMpemanfaatan法 juga bisa dijadikan referensi.
Prisma dengan ブログ databaseスキーマ 設計して。
- pengguna、artikel、kategori、コメント モデル
- tepatなリレーション dan index
- pagination付き pencarianquery
- トランザクション 使ったpublikasipemrosesan
- マイグレーションfile juga generateして
Prisma 詳細 Prisma公式dokumen silakan lihat.Claude Code pemanfaatan法 公式dokumen konfirmasi bisa dilakukan.
Summary
Prisma ORM type safetyなdatabaseアクセス penyediaanし、pengembangan体験 大幅 向上させ.Claude Code スキーマ設計 dari queryoptimasiま 依頼すれば、robustなデータ層 efisien pembangunan bisa dilakukan.
Related Posts
Apa Itu Claude Code? Panduan Lengkap dari Instalasi hingga Penggunaan Pertama
Panduan ramah pemula untuk menginstal dan menggunakan Claude Code. Pelajari cara memulai dengan AI coding assistant berbasis terminal ini hari ini.
Claude Code untuk Non-Engineer: Pendekatan No-Code untuk Development Berbasis AI
Pelajari cara menggunakan Claude Code tanpa pengalaman programming sama sekali. Dari perintah terminal dasar hingga membangun website, panduan ramah pemula ini memandu kamu step by step.
Paket Harga Claude Code dan Cara Menghitung ROI
Breakdown jelas tentang struktur harga Claude Code. Bandingkan paket, pelajari strategi optimasi biaya, dan pahami ROI nyata dengan angka konkret.