Prisma driver adapter for Cloudflare D1
Prisma driver adapter for Cloudflare's D1 database.
[!NOTE]
The adapter is currently in Preview, we are looking for feedback before moving to General Availability.
Refer to the announcement blog post and our docs for more details.
Getting started
To get started, enable the driverAdapters
Preview feature flag in your Prisma schema:
// schema.prisma
generator client {
provider = "prisma-client-js"
previewFeatures = ["driverAdapters"]
}
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}
Install Prisma CLI, Prisma Client, the Prisma adapter for Cloudflare D1, the TypeScript types for Cloudflare Workers, and Wrangler CLI packages:
npm install @prisma/client
npm install @prisma/adapter-d1
npm install --save-dev prisma
npm install --save-dev @cloudflare/workers-types
npm install --save-dev wrangler
Generate Prisma Client:
npx prisma generate
Update your Prisma Client instance to use PrismaD1
:
import { PrismaClient } from '@prisma/client'
import { PrismaD1 } from '@prisma/adapter-d1'
export interface Env {
MY_DATABASE: D1Database
}
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
const adapter = new PrismaD1(env.MY_DATABASE)
const prisma = new PrismaClient({ adapter })
const usersCount = await prisma.user.count()
return new Response(usersCount)
},
}
For JavaScript users
import { PrismaClient } from '@prisma/client'
import { PrismaD1 } from '@prisma/adapter-d1'
export default {
async fetch(request, env, ctx) {
const adapter = new PrismaD1(env.MY_DATABASE)
const prisma = new PrismaClient({ adapter })
const usersCount = await prisma.user.count()
return new Response(usersCount)
},
}
Note: Make sure your D1 database is setup in your wrangler.toml
. Refer to Cloudflare's docs to learn how to set up your database binding.
[[d1_databases]]
binding = "MY_DATABASE"
database_name = "database_name"
database_id = "<unique-ID-for-your-database>"
Migrations
Please refer to our docs to learn how to manage schema changes when using Prisma and Cloudflare D1.
Feedback
We encourage you to create an issue if you find something missing or run into a bug.
If you have any feedback, leave a comment in this GitHub discussion.