plan
Để xây dựng một bộ tài liệu "Prisma ORM Mega-Guide" chuẩn mực, chi tiết và có thể dùng làm Reference/Cheat-sheet cho Developer, chúng ta sẽ tiếp tục áp dụng chiến lược Chain-Prompting (Chuỗi Prompt).
Prisma có kiến trúc rất khác biệt so với TypeORM (sử dụng .prisma schema file và auto-generated Client), do đó các prompt cần nhấn mạnh vào code mẫu và quy trình làm việc (workflow).
⚙️ Prompt 0: Cài đặt bối cảnh (Gửi đầu tiên)
Prompt: Đóng vai là một Senior Backend Developer và Technical Writer chuyên nghiệp. Nhiệm vụ của bạn là giúp tôi viết một cẩm nang toàn tập (Mega-Guide) và Kế hoạch học tập về Prisma ORM dành cho Developer. Yêu cầu chung:
- Sử dụng ngôn ngữ tiếng Việt tự nhiên, giữ nguyên các thuật ngữ chuyên ngành (Introspection, Schema, Prisma Client, Migrate, Shadow Database...).
- Viết dưới dạng tài liệu tra cứu (Reference/Cheat-sheet), trình bày bằng Markdown gọn gàng.
- Bắt buộc phải có code snippets (TypeScript,
.prismafile) minh họa rõ ràng cho mọi tính năng.- Bổ sung các "Pro-tips" hoặc "Lưu ý thực tế" ở mỗi phần. Nếu bạn đã hiểu, hãy trả lời: "Tôi đã sẵn sàng nhận Prompt 1".
📝 Prompt 1: Tổng quan & Prisma Schema (Khởi tạo)
Sau khi AI sẵn sàng, gửi prompt này.
Prompt: Hãy viết Phần 1: Giới thiệu & Prisma Schema.
1. Introduction (Tổng quan về Prisma ORM)
- Core Concepts: Prisma là gì? Kiến trúc 3 phần của Prisma (Prisma Client, Prisma Migrate, Prisma Studio) khác biệt thế nào so với ORM truyền thống?
- Data modeling & Supported databases: Các database được hỗ trợ.
- API patterns: Cách Prisma tiếp cận việc query dữ liệu (Type-safe).
2. Prisma Schema
- Overview & Data Model: Giải thích file
schema.prisma. Cách định nghĩadatasource,generatorvà cácmodel(kèm code mẫu file .prisma gồm các bảng User, Post có quan hệ 1-N).- What is introspection?: Khái niệm
prisma db pull. Lợi ích của nó khi làm việc với database có sẵn (Brownfield project).- PostgreSQL extensions: Cách khai báo và sử dụng các extension của Postgres trong Prisma schema (vd: pgcrypto, uuid-ossp).
📝 Prompt 2: Prisma Client - Truy vấn & Type Safety (Phần cốt lõi)
Chờ AI viết xong phần 1, gửi tiếp prompt này.
Prompt: Tuyệt vời. Hãy viết tiếp Phần 2: Prisma Client (Phần quan trọng nhất để tra cứu).
1. Setup and Configuration
- Cách
prisma generatetạo ra thư viện type-safe trongnode_modules. Khởi tạo PrismaClient instance.2. Queries (Thao tác dữ liệu cơ bản & nâng cao) Cung cấp API Reference và code TypeScript mẫu cho:
- CRUD cơ bản:
findUnique,findFirst,findMany,create,update,delete.- Quan hệ (Relations): Cách dùng
includeđể lấy dữ liệu bảng liên quan, và thao tác Nested Writes (tạo User và tạo luôn Post của User đó).- Filtering & Sorting: Cách dùng
where,orderBy, pagination (skip,take,cursor).3. Type Safety & Special Fields
- Khẳng định sức mạnh Type Safety của Prisma so với ORM khác (Gợi ý code 100%).
- Special Fields and Types: Xử lý kiểu
JSON,Enums, vàDateTime.4. Using Raw SQL
- Cách dùng
$queryRawvà$executeRawkhi cần viết SQL thuần. Hỗ trợ chống SQL Injection ra sao?
📝 Prompt 3: Nâng cao & Vận hành (Advanced Prisma Client)
Chờ AI viết xong phần 2, gửi tiếp prompt này.
Prompt: Viết tiếp Phần 3: Các tính năng nâng cao và Vận hành thực tế với Prisma Client.
1. Client Extensions
- Giới thiệu Prisma Client Extensions. Cách mở rộng query, thêm computed fields (vd: tự động tính
fullNametừfirstNamevàlastName).2. Observability, Logging & Debugging
- Cách cấu hình Logging (query, info, warn, error).
- Bắt lỗi và Debugging cơ bản.
3. Testing & Deployment
- Testing: Đề xuất cách mock Prisma Client trong Unit Test (nhắc đến
prisma-mockhoặcvitest/jest mock).- Deployment: Lưu ý cực kỳ quan trọng về Connection Pooling trong môi trường Serverless (Cách dùng Prisma Accelerate hoặc PgBouncer).