This project matches the 90‑minute Prisma lesson: - Prisma schema & migrations (User–Post–Comment) - Type‑safe CRUD, relations (select/include), cursor pagination - Interactive transactions (POST /posts/:id/publish) - Prisma Studio for quick data edits - Express API for users, posts, comments - Raw SQL (parameterized) example

Quick Start

npm install
npx prisma generate
npm run prisma:migrate
npm run seed
npm run dev
# open http://localhost:3000
# Studio: npm run prisma:studio

Example Requests (HTTP file friendly)

GET http://localhost:3000/health

### Users
GET http://localhost:3000/users
GET http://localhost:3000/users/1
POST http://localhost:3000/users
Content-Type: application/json

{ "email": "carol@example.com", "name": "Carol" }

### Posts
GET http://localhost:3000/posts?take=5&published=true
GET http://localhost:3000/posts/1
POST http://localhost:3000/posts
Content-Type: application/json

{ "title": "Intro", "content": "hi", "authorEmail": "carol@example.com" }

PATCH http://localhost:3000/posts/1
Content-Type: application/json

{ "title": "New Title" }

POST http://localhost:3000/posts/1/publish

### Comments
GET http://localhost:3000/posts/1/comments
POST http://localhost:3000/posts/1/comments
Content-Type: application/json

{ "authorEmail": "carol@example.com", "content": "Nice!" }

### Stats
GET http://localhost:3000/stats/post-count?published=true

Switch to Postgres/MySQL

1) In prisma/schema.prisma, change provider to "postgresql" or "mysql"
2) Update .env DATABASE_URL
3) Re‑run:

npx prisma generate
npx prisma migrate dev --name init

Use a pooler (PgBouncer) or Prisma Accelerate for serverless/high concurrency setups.