Files
lead-scraper/lib/db.ts
TimoUttenweiler a9a0be157f fix: Turso/libsql HTTP adapter für Windows-Kompatibilität
- 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>
2026-03-25 12:00:19 +01:00

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;