mirror of
https://github.com/FranP-code/create-better-t-stack.git
synced 2025-10-12 23:52:15 +00:00
feat(cli): prisma + workers, prisma + turso, planetscale (postgres/mysql) support (#567)
This commit is contained in:
@@ -1,4 +1,15 @@
|
||||
{{#if (or (eq runtime "bun") (eq runtime "node"))}}
|
||||
{{#if (eq dbSetup "planetscale")}}
|
||||
import { drizzle } from "drizzle-orm/planetscale-serverless";
|
||||
|
||||
export const db = drizzle({
|
||||
connection: {
|
||||
host: process.env.DATABASE_HOST,
|
||||
username: process.env.DATABASE_USERNAME,
|
||||
password: process.env.DATABASE_PASSWORD,
|
||||
},
|
||||
});
|
||||
{{else}}
|
||||
import { drizzle } from "drizzle-orm/mysql2";
|
||||
|
||||
export const db = drizzle({
|
||||
@@ -7,8 +18,21 @@ export const db = drizzle({
|
||||
},
|
||||
});
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq runtime "workers")}}
|
||||
{{#if (eq dbSetup "planetscale")}}
|
||||
import { drizzle } from "drizzle-orm/planetscale-serverless";
|
||||
import { env } from "cloudflare:workers";
|
||||
|
||||
export const db = drizzle({
|
||||
connection: {
|
||||
host: env.DATABASE_HOST,
|
||||
username: env.DATABASE_USERNAME,
|
||||
password: env.DATABASE_PASSWORD,
|
||||
},
|
||||
});
|
||||
{{else}}
|
||||
import { drizzle } from "drizzle-orm/mysql2";
|
||||
import { env } from "cloudflare:workers";
|
||||
|
||||
@@ -18,3 +42,4 @@ export const db = drizzle({
|
||||
},
|
||||
});
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import { PrismaClient } from "./generated/client";
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
export default prisma;
|
||||
5
apps/cli/templates/db/prisma/mongodb/src/db/index.ts.hbs
Normal file
5
apps/cli/templates/db/prisma/mongodb/src/db/index.ts.hbs
Normal file
@@ -0,0 +1,5 @@
|
||||
import { PrismaClient } from "../../prisma/generated/client";
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
export default prisma;
|
||||
@@ -1,5 +0,0 @@
|
||||
import { PrismaClient } from "./generated/client";
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
export default prisma;
|
||||
@@ -11,9 +11,15 @@ generator client {
|
||||
{{#if (eq runtime "workers")}}
|
||||
runtime = "workerd"
|
||||
{{/if}}
|
||||
{{#if (eq dbSetup "planetscale")}}
|
||||
previewFeatures = ["driverAdapters"]
|
||||
{{/if}}
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "mysql"
|
||||
url = env("DATABASE_URL")
|
||||
{{#if (eq dbSetup "planetscale")}}
|
||||
relationMode = "prisma"
|
||||
{{/if}}
|
||||
}
|
||||
|
||||
12
apps/cli/templates/db/prisma/mysql/src/db/index.ts.hbs
Normal file
12
apps/cli/templates/db/prisma/mysql/src/db/index.ts.hbs
Normal file
@@ -0,0 +1,12 @@
|
||||
import { PrismaClient } from "../../prisma/generated/client";
|
||||
{{#if (eq dbSetup "planetscale")}}
|
||||
import { PrismaPlanetScale } from '@prisma/adapter-planetscale'
|
||||
|
||||
const adapter = new PrismaPlanetScale({ url: process.env.DATABASE_URL })
|
||||
|
||||
const prisma = new PrismaClient({adapter});
|
||||
{{else}}
|
||||
const prisma = new PrismaClient();
|
||||
{{/if}}
|
||||
|
||||
export default prisma;
|
||||
@@ -1,5 +0,0 @@
|
||||
import { PrismaClient } from "./generated/client";
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
export default prisma;
|
||||
@@ -19,4 +19,7 @@ datasource db {
|
||||
{{#if (eq dbSetup "supabase")}}
|
||||
directUrl = env("DIRECT_URL")
|
||||
{{/if}}
|
||||
{{#if (eq dbSetup "planetscale")}}
|
||||
relationMode = "prisma"
|
||||
{{/if}}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import { PrismaClient } from "../../prisma/generated/client";
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
export default prisma;
|
||||
@@ -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;
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import { PrismaClient } from "./generated/client";
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
export default prisma;
|
||||
@@ -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}}
|
||||
}
|
||||
|
||||
28
apps/cli/templates/db/prisma/sqlite/src/db/index.ts.hbs
Normal file
28
apps/cli/templates/db/prisma/sqlite/src/db/index.ts.hbs
Normal 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}}
|
||||
Reference in New Issue
Block a user