NOTE
**Nota** — Al momento Prisma richiede che Node.js sia installato per eseguire determinati codici di generazione. Assicurati che Node.js sia installato nell'ambiente in cui esegui i comandi `bunx prisma`.#### Creare un nuovo progetto">
Per prima cosa, crea una directory e inizializzala con `bun init`.
```bash
mkdir prisma-postgres-app
cd prisma-postgres-app
bun init
```
#### Installare le dipendenze Prisma">
Poi installa la CLI di Prisma (`prisma`), Prisma Client (`@prisma/client`) e l'estensione accelerate come dipendenze.
```bash
bun add -d prisma
bun add @prisma/client @prisma/extension-accelerate
```
#### Inizializzare Prisma con PostgreSQL">
Useremo la CLI di Prisma con `bunx` per inizializzare il nostro schema e la directory delle migrazioni. Useremo PostgreSQL come database.
```bash
bunx --bun prisma init --db
```
Questo crea uno schema di base. Dobbiamo aggiornarlo per usare il nuovo client senza Rust con l'ottimizzazione Bun. Apri `prisma/schema.prisma` e modifica il blocco del generatore, poi aggiungi un semplice modello `User`.
```prisma prisma/schema.prisma
generator client {
provider = "prisma-client"
output = "./generated" // [!code ++]
engineType = "client" // [!code ++]
runtime = "bun" // [!code ++]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User { // [!code ++]
id Int @id @default(autoincrement()) // [!code ++]
email String @unique // [!code ++]
name String? // [!code ++]
} // [!code ++]
```
#### Configurare la connessione al database">
Imposta l'URL del tuo database Postgres nel file `.env`.
```ini .env
DATABASE_URL="postgresql://username:password@localhost:5432/mydb?schema=public"
```
#### Creare ed eseguire la migrazione del database">
Poi genera ed esegui la migrazione iniziale.
Questo creerà un file di migrazione `.sql` in `prisma/migrations` ed eseguirà la migrazione sul tuo database Postgres.
```bash
bunx --bun prisma migrate dev --name init
```
```txt
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "mydb", schema "public" at "localhost:5432"
Applying migration `20250114141233_init`
The following migration(s) have been created and applied from new schema changes:
prisma/migrations/
└─ 20250114141233_init/
└─ migration.sql
Your database is now in sync with your schema.
✔ Generated Prisma Client (6.17.1) to ./generated in 18ms
```
#### Generare Prisma Client">
Come indicato nell'output, Prisma rigenera il nostro _Prisma client_ ogni volta che eseguiamo una nuova migrazione. Il client fornisce un'API completamente tipizzata per leggere e scrivere dal nostro database. Puoi rigenerare manualmente il client con la CLI di Prisma.
```sh
bunx --bun prisma generate
```
#### Inizializzare Prisma Client con Accelerate">
Ora dobbiamo creare un'istanza del client Prisma. Crea un nuovo file `prisma/db.ts` per inizializzare PrismaClient con l'adattatore Postgres.
```ts prisma/db.ts
import { PrismaClient } from "./generated/client";
import { withAccelerate } from '@prisma/extension-accelerate'
export const prisma = new PrismaClient().$extends(withAccelerate())
```
#### Creare uno script di test">
Scriviamo un semplice script per creare un nuovo utente, poi contare il numero di utenti nel database.
```ts index.ts
import { prisma } from "./prisma/db";
// crea un nuovo utente
await prisma.user.create({
data: {
name: "John Dough",
email: `john-${Math.random()}@example.com`,
},
});
// conta il numero di utenti
const count = await prisma.user.count();
console.log(`Ci sono ${count} utenti nel database.`);
```
#### Eseguire e testare l'applicazione">
Eseguiamo questo script con `bun run`. Ogni volta che lo eseguiamo, viene creato un nuovo utente.
```bash
bun run index.ts
```
```txt
Ci sono 1 utenti nel database.
```
```bash
bun run index.ts
```
```txt
Ci sono 2 utenti nel database.
```
```bash
bun run index.ts
```
```txt
Ci sono 3 utenti nel database.
```
Questo è tutto! Ora che hai configurato Prisma Postgres usando Bun, ti consigliamo di consultare la documentazione ufficiale di Prisma Postgres mentre continui a sviluppare la tua applicazione.