feat(cli): prisma + workers, prisma + turso, planetscale (postgres/mysql) support (#567)

This commit is contained in:
Aman Varshney
2025-09-08 12:15:26 +05:30
committed by GitHub
parent 33344d91be
commit cd5d0f0aeb
66 changed files with 1486 additions and 729 deletions

View File

@@ -1,10 +1,38 @@
import "dotenv/config";
import path from "node:path";
import type { PrismaConfig } from "prisma";
{{#if (eq dbSetup "d1")}}
import { PrismaD1 } from "@prisma/adapter-d1";
{{/if}}
{{#if (eq dbSetup "turso")}}
import { PrismaLibSQL } from "@prisma/adapter-libsql";
{{/if}}
export default {
{{#if (or (eq dbSetup "d1") (eq dbSetup "turso"))}}
experimental: {
adapter: true
},
{{/if}}
schema: path.join("prisma", "schema"),
migrations: {
path: path.join("prisma", "migrations"),
}
},
{{#if (eq dbSetup "d1")}}
async adapter() {
return new PrismaD1({
CLOUDFLARE_D1_TOKEN: process.env.CLOUDFLARE_D1_TOKEN,
CLOUDFLARE_ACCOUNT_ID: process.env.CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_DATABASE_ID: process.env.CLOUDFLARE_DATABASE_ID,
});
},
{{/if}}
{{#if (eq dbSetup "turso")}}
async adapter() {
return new PrismaLibSQL({
url: process.env.DATABASE_URL || "",
authToken: process.env.DATABASE_AUTH_TOKEN,
});
},
{{/if}}
} satisfies PrismaConfig;

View File

@@ -1,5 +0,0 @@
import { PrismaClient } from "./generated/client";
const prisma = new PrismaClient();
export default prisma;

View File

@@ -10,10 +10,20 @@ generator client {
{{/if}}
{{#if (eq runtime "workers")}}
runtime = "workerd"
{{#if (eq dbSetup "d1")}}
previewFeatures = ["driverAdapters"]
{{/if}}
{{/if}}
{{#if (eq dbSetup "turso")}}
previewFeatures = ["driverAdapters"]
{{/if}}
}
datasource db {
provider = "sqlite"
{{#if (eq dbSetup "turso")}}
url = "file:./local.db"
{{else}}
url = env("DATABASE_URL")
{{/if}}
}

View File

@@ -0,0 +1,28 @@
{{#if (eq dbSetup "d1")}}
import { env } from "cloudflare:workers";
import { PrismaD1 } from "@prisma/adapter-d1";
import { PrismaClient } from "../../prisma/generated/client";
const adapter = new PrismaD1(env.DB);
const prisma = new PrismaClient({ adapter });
export default prisma;
{{else if (eq dbSetup "turso")}}
import { PrismaLibSQL } from "@prisma/adapter-libsql";
import { PrismaClient } from "../../prisma/generated/client";
const adapter = new PrismaLibSQL({
url: process.env.DATABASE_URL || "",
authToken: process.env.DATABASE_AUTH_TOKEN,
});
const prisma = new PrismaClient({ adapter });
export default prisma;
{{else}}
import { PrismaClient } from "../../prisma/generated/client";
const prisma = new PrismaClient();
export default prisma;
{{/if}}