Move to guide the dragon ยท Click for fire & roar ๐Ÿ‰๐Ÿ”Š
ETHIOCODE ยท LESSON 22 ยท PRISMA ORM
DATABASE ORM ยท TYPE-SAFE ยท NEXT-GEN

Prisma ORM ๐Ÿ—„๏ธ Database Magic! Type-Safe ยท Auto-Complete ยท Schema-First ยท Multi-Database

Database แŠ• แ‰€แˆ‹แˆ‰แŠ• แŠ แˆตแ‰ฐแ‹ณแ‹ตแˆญ! TypeScript-safe queries, auto-migrations! ๐Ÿ”ฅ
The modern database toolkit โ€” auto-complete queries, type safety, and beautiful schema DSL!

๐Ÿ‰ Mouse แŠ• แ‹˜แ‹‹แ‹ˆแˆญ dragon แŠ• แˆแˆซ ยท Click แˆˆ fire!

A
Created by @AppMinds_ET
01๐Ÿ—„๏ธ
Prisma แˆแŠ•แ‹ตแŠ• แАแ‹?// Next-Gen ORM

Prisma = TypeScript-safe Database ORM! Mongoose แŠ• แ‹ซแˆปแˆ‹แ‰ธแ‹‹แˆ โ€” MySQL, PostgreSQL, SQLite, MongoDB แˆแˆ‰ แ‹ญแˆฐแˆซแˆ‰! Auto-complete, validation, migrations แˆแˆ‰ built-in!
Prisma is a next-gen ORM for Node.js and TypeScript โ€” auto-complete, type safety, and a beautiful schema language!

๐Ÿƒ Mongoose (แŠญแแˆ 16)
// No TypeScript!
const schema = new Schema({ name: String });
await User.find({});

โŒ TypeScript safety แ‹จแˆˆแˆ
โŒ MongoDB only
โœจ Prisma (แŠญแแˆ 22)
// Full TypeScript!
model User { id Int @id; name String }
await prisma.user.findMany();

โœ… Full TypeScript!
โœ… MySQL/PostgreSQL/SQLite/MongoDB
02๐Ÿ“
Prisma Schema// schema.prisma file

schema.prisma = แ‹‹แŠ“แ‹ file! Models, fields, relations, types แˆแˆ‰ แ‹ญแƒแ‹แˆ‰! npx prisma migrate dev โ†’ Database tables แ‹ญแˆแŒฅแˆซแˆƒแˆ!
Define your data model once โ€” Prisma generates TypeScript types and SQL migrations automatically!

schema.prisma
model User {
  id        Int      @id @default(autoincrement())
  name      String
  email     String   @unique
  role      Role     @default(USER)
  posts     Post[]
  createdAt DateTime @default(now())
}

model Post {
  id       Int     @id @default(autoincrement())
  title    String
  content  String?          // ? = optional
  author   User    @relation(fields:[authorId], references:[id])
  authorId Int
}

enum Role { USER; ADMIN }
03โšก
CRUD Operations// prisma.model.method()

Prisma แˆ™แˆ‰ CRUD โ€” Auto-complete แŒ‹แˆญ!

CRUDMETHODแˆแˆณแˆŒแ‰ตแˆญแŒ‰แˆ
CREATEprisma.user.create(){ data:{name,email} }แŠ แ‹ฒแˆต user
READprisma.user.findMany(){ where:{role:"ADMIN"} }แˆแˆ‰แˆ users
READ 1prisma.user.findUnique(){ where:{id:1} }แŠ แŠ•แ‹ฑแŠ• user
UPDATEprisma.user.update(){ where:{id}, data:{name} }แ‰€แ‹ญแˆญ
DELETEprisma.user.delete(){ where:{id:1} }แˆฐแˆญแ‹
prisma-crud.ts
const prisma = new PrismaClient();

// CREATE
await prisma.user.create({ data: { name: 'Abel', email: 'abel@x.com' } });

// READ + filter + sort + limit
await prisma.user.findMany({
  where:   { role: 'ADMIN' },
  orderBy: { createdAt: 'desc' },
  take: 10,
});

// READ with relation (include posts!)
await prisma.user.findUnique({
  where:   { id: 1 },
  include: { posts: true },
});

// UPDATE
await prisma.user.update({ where: { id: 1 }, data: { name: 'Abel T.' } });

// DELETE
await prisma.user.delete({ where: { id: 1 } });
04๐ŸŽฎ
Live Prisma Demo!// Query Simulator

Prisma Query Simulator! Users แแŒ แˆญแฃ query แˆžแŠญแˆญแฃ relations แ‹ญแˆ˜แˆแŠจแ‰ต! Dragon แŠ• แŠ แ‹แ‹ background แˆ‹แ‹ญ! ๐Ÿ‰
Simulate Prisma queries โ€” create users, run queries, view relations!

prisma.user
3 records
๐Ÿ‘ฅ Users DB
โšก Queries
๐Ÿ”— Relations
Quick queries:
โ† Query แˆแˆจแŒฅ
User โ†’ Posts Relations
include:{posts:true} โ†’ User แŠ• Posts แŒ‹แˆญ แŠ แ‰ฅแˆฎ แŠ แˆแŒฃ!
05๐Ÿ“Œ
แ‹‹แŠ“ แ‹‹แŠ“ แАแŒฅแ‰ฆแ‰ฝ// Key Takeaways
1
๐Ÿ—„๏ธ Prisma = Next-Gen TypeScript ORM

Mongoose แŠ• แ‹ซแˆปแˆ‹แ‰ธแ‹‹แˆ โ€” TypeScript-safe, auto-complete, MySQL/PostgreSQL/SQLite แˆแˆ‰!
Works with multiple databases and provides full type safety.

2
๐Ÿ“ schema.prisma โ€” Single Source of Truth

model User { id Int @id name String email String @unique }
Define once โ€” Prisma generates TypeScript types and SQL migrations!

3
โšก Type-Safe CRUD Queries

prisma.user.findMany({ where:{role:'ADMIN'} }) โ€” auto-complete!
IntelliSense and type errors for wrong queries at compile time!

4
๐Ÿ”— Relations โ€” include แ‰€แˆ‹แˆ‰!

prisma.user.findUnique({ include:{posts:true} }) โ€” User + Posts!
Relations handled automatically โ€” no manual JOINs needed!

5
๐Ÿ–ฅ๏ธ Prisma Studio โ€” GUI!

npx prisma studio โ†’ localhost:5555 โ†’ Browser DB viewer! แˆแŠ•แˆ code แŠ แ‹ซแˆตแˆแˆแŒแˆ!
Visual database browser โ€” view and edit records without writing queries!

06๐ŸŽฏ
Quiz
โ“ Prisma แ‹แˆตแŒฅ User model แŠ• Post model แŒ‹แˆญ แˆˆแˆ›แ‹ซแ‹ซแ‹ แˆแŠ• แ‰ตแŒ แ‰€แˆ›แˆˆแˆ…?
How do you fetch a user WITH their posts in one Prisma query?
AUser.populate('posts')
Bprisma.user.findUnique({ include: { posts: true } }) โœ…
CJOIN User ON Post.userId
Dprisma.user.with('posts')
๐Ÿ—„๏ธ แŠญแแˆ 22 โ€” Prisma!

Excellent! Prisma Database ORM แ‰ฐแˆ›แˆญแŠ•! ๐ŸŽ‰๐Ÿ‰

แ‰€แŒฃแ‹ญ: GraphQL API ๐Ÿ”ฎ

๐ŸŒ ethiocodesoftselect.netlify.app

โœˆ @EthioCodeSoftSelect

แ‰ปแŠ“แˆ‰แŠ• แŠญแˆแ‰ฑ โ†’ Join ๐Ÿš€
โœ๏ธ Created by@AppMinds_ET