Skip to content

NOTE

**Nota** — O sistema de carregamento dinâmico de subcomandos do Prisma atualmente requer npm instalado junto com o Bun. Isso afeta certos comandos CLI como `prisma init`, `prisma migrate`, etc. O código gerado funciona perfeitamente com Bun usando o novo generator `prisma-client`.

Criar um novo projeto

Prisma funciona perfeitamente com Bun. Primeiro, crie um diretório e inicialize-o com bun init.

bash
mkdir prisma-app
cd prisma-app
bun init

Instalar dependências do Prisma

Em seguida, instale a CLI do Prisma (prisma), Prisma Client (@prisma/client) e o adaptador LibSQL como dependências.

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

Inicializar Prisma com SQLite

Usaremos a CLI do Prisma com bunx para inicializar nosso schema e diretório de migração. Para simplificar, usaremos um banco de dados SQLite em memória.

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

Isso cria um schema básico. Precisamos atualizá-lo para usar o novo cliente sem Rust com otimização Bun. Abra prisma/schema.prisma e modifique o bloco do generator, depois adicione um modelo simples 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?
}

Criar e executar migração do banco de dados

Em seguida, gere e execute a migração inicial.

Isso gerará um arquivo de migração .sql em prisma/migrations, criará uma nova instância SQLite e executará a migração na nova instância.

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

Gerar Prisma Client

Como indicado na saída, o Prisma regenera nosso Prisma client sempre que executamos uma nova migração. O client fornece uma API totalmente tipada para ler e gravar em nosso banco de dados. Você pode regenerar manualmente o client com a CLI do Prisma.

sh
bunx --bun prisma generate

Inicializar Prisma Client com LibSQL

Agora precisamos criar uma instância do Prisma client. Crie um novo arquivo prisma/db.ts para inicializar o PrismaClient com o adaptador 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 });

Criar um script de teste

Vamos escrever um script simples para criar um novo usuário e depois contar o número de usuários no banco de dados.

ts
import { prisma } from "./prisma/db";

// criar um novo usuário
await prisma.user.create({
	data: {
	name: "John Dough",
	email: `john-${Math.random()}@example.com`,
	},
});

// contar o número de usuários
const count = await prisma.user.count();
console.log(`Existem ${count} usuários no banco de dados.`);

Executar e testar a aplicação

Vamos executar este script com bun run. Cada vez que executamos, um novo usuário é criado.

bash
bun run index.ts
txt
Created john-0.12802932895402364@example.com
Existem 1 usuários no banco de dados.
bash
bun run index.ts
txt
Created john-0.8671308799782803@example.com
Existem 2 usuários no banco de dados.
bash
bun run index.ts
txt
Created john-0.4465968383115295@example.com
Existem 3 usuários no banco de dados.

É isso! Agora que você configurou o Prisma usando Bun, recomendamos consultar a documentação oficial do Prisma à medida que continua a desenvolver sua aplicação.

Bun by www.bunjs.com.cn edit