Skip to content

NOTE

**Nota** — Il sistema di caricamento dei sottocomandi dinamici di Prisma richiede attualmente che npm sia installato insieme a Bun. Questo influisce su alcuni comandi CLI come `prisma init`, `prisma migrate`, ecc. Il codice generato funziona perfettamente con Bun usando il nuovo generatore `prisma-client`.

Creare un nuovo progetto

Prisma funziona out of the box con Bun. Per prima cosa, crea una directory e inizializzala con bun init.

bash
mkdir prisma-app
cd prisma-app
bun init

Installare le dipendenze Prisma

Poi installa la CLI di Prisma (prisma), Prisma Client (@prisma/client) e l'adattatore LibSQL come dipendenze.

bash
bun add -d prisma
bun add @prisma/client @prisma/adapter-libsql

Inizializzare Prisma con SQLite

Useremo la CLI di Prisma con bunx per inizializzare il nostro schema e la directory delle migrazioni. Per semplicità useremo un database SQLite in memoria.

bash
bunx --bun prisma init --datasource-provider sqlite

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
	generator client {
	provider = "prisma-client"
	output = "./generated"
	engineType = "client"
	runtime = "bun"
	}

	datasource db {
	provider = "sqlite"
	url      = env("DATABASE_URL")
	}

	model User { 
	id    Int     @id @default(autoincrement()) 
	email String  @unique
	name  String?
	} 

Creare ed eseguire la migrazione del database

Poi genera ed esegui la migrazione iniziale.

Questo creerà un file di migrazione .sql in prisma/migrations, creerà una nuova istanza SQLite ed eseguirà la migrazione sulla nuova istanza.

bash
	bunx --bun prisma migrate dev --name init
	```
	```txt
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": SQLite database "dev.db" at "file:./dev.db"

SQLite database dev.db created at file:./dev.db

Applying migration `20251014141233_init`

The following migration(s) have been created and applied from new schema changes:

prisma/migrations/
	└─ 20251014141233_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 LibSQL

Ora dobbiamo creare un'istanza del client Prisma. Crea un nuovo file prisma/db.ts per inizializzare PrismaClient con l'adattatore LibSQL.

ts
import { PrismaClient } from "./generated/client";
import { PrismaLibSQL } from "@prisma/adapter-libsql";

const adapter = new PrismaLibSQL({ url: process.env.DATABASE_URL || "" });
export const prisma = new PrismaClient({ adapter });

Creare uno script di test

Scriviamo un semplice script per creare un nuovo utente, poi contare il numero di utenti nel database.

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
Created john-0.12802932895402364@example.com
Ci sono 1 utenti nel database.
bash
bun run index.ts
txt
Created john-0.8671308799782803@example.com
Ci sono 2 utenti nel database.
bash
bun run index.ts
txt
Created john-0.4465968383115295@example.com
Ci sono 3 utenti nel database.

Questo è tutto! Ora che hai configurato Prisma usando Bun, ti consigliamo di consultare la documentazione ufficiale di Prisma mentre continui a sviluppare la tua applicazione.

Bun a cura di www.bunjs.com.cn