- PrismaLibSql Factory statt pre-created client (URL_INVALID fix) - libsql:// URL zu https:// konvertieren für @libsql/client/http - prisma.config.ts nutzt TURSO_DATABASE_URL wenn gesetzt - .env.local.example mit Turso-Docs erweitert - @libsql/client auf 0.17.0 pinned Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
26 lines
1.1 KiB
TypeScript
26 lines
1.1 KiB
TypeScript
import { PrismaClient } from "@prisma/client";
|
|
import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
|
|
import { PrismaLibSql } from "@prisma/adapter-libsql";
|
|
|
|
// Prisma 7 requires a driver adapter for SQLite connections.
|
|
// Uses Turso (cloud SQLite) when TURSO_DATABASE_URL is set, otherwise local file.
|
|
function createPrisma() {
|
|
if (process.env.TURSO_DATABASE_URL) {
|
|
const url = process.env.TURSO_DATABASE_URL.replace(/^libsql:\/\//, "https://");
|
|
const adapter = new PrismaLibSql({ url, authToken: process.env.TURSO_AUTH_TOKEN });
|
|
return new PrismaClient({ adapter } as ConstructorParameters<typeof PrismaClient>[0]);
|
|
}
|
|
|
|
const url = process.env.DATABASE_URL || "file:./leadflow.db";
|
|
const adapter = new PrismaBetterSqlite3({ url });
|
|
return new PrismaClient({ adapter } as ConstructorParameters<typeof PrismaClient>[0]);
|
|
}
|
|
|
|
const globalForPrisma = globalThis as unknown as {
|
|
prisma: PrismaClient | undefined;
|
|
};
|
|
|
|
export const prisma = globalForPrisma.prisma ?? createPrisma();
|
|
|
|
if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;
|