Prisma Client
Inizializzazione
```typescript import { PrismaClient } from ‘@prisma/client’
const prisma = new PrismaClient()
// Best practice in Next.js: usare un singleton in dev // per evitare troppe connessioni durante l’HMR. ```
CRUD Operations
Create
```typescript const user = await prisma.user.create({ data: { email: ‘elsa@prisma.io’, name: ‘Elsa Prisma’, }, }) ```
Read
```typescript // Trova tutti const users = await prisma.user.findMany()
// Filtra (WHERE) const admins = await prisma.user.findMany({ where: { isAdmin: true, }, })
// Trova uno solo (Unique) const user = await prisma.user.findUnique({ where: { email: ‘elsa@prisma.io’, }, }) ```
Update
```typescript const updatedUser = await prisma.user.update({ where: { email: ‘elsa@prisma.io’, }, data: { name: ‘Elsa la regina’, }, }) ```
Delete
```typescript const deletedUser = await prisma.user.delete({ where: { email: ‘elsa@prisma.io’, }, }) ```
Relazioni (Include & Select)
Uno dei poteri più grandi di Prisma è caricare dati relazionali annidati facilmente.
```typescript const usersWithPosts = await prisma.user.findMany({ include: { posts: true, // Carica tutti i post dell’utente }, })
// Oppure seleziona solo campi specifici const usersSelect = await prisma.user.findMany({ select: { name: true, posts: { select: { title: true, // Solo il titolo dei post }, }, }, }) ```