Merge pull request 'fix: migrate to Prisma 7 driver adapter (libsql) for SQLite' (#2) from claude/reverent-proskuriakova into master

Reviewed-on: #2
This commit was merged in pull request #2.
This commit is contained in:
2026-03-12 23:51:13 -05:00
5 changed files with 20 additions and 10 deletions

View File

@@ -17,7 +17,6 @@ COPY . .
# Generate Prisma Client (with SQLite)
ENV DATABASE_URL="file:/app/data/dev.db"
ENV PRISMA_CLIENT_ENGINE_TYPE=library
RUN npx prisma generate
# Disable telemetry during build
@@ -32,7 +31,6 @@ WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV DATABASE_URL="file:/app/data/dev.db"
ENV PRISMA_CLIENT_ENGINE_TYPE=library
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs

View File

@@ -9,7 +9,9 @@
"lint": "eslint"
},
"dependencies": {
"@libsql/client": "^0.14.0",
"@next-auth/prisma-adapter": "^1.0.7",
"@prisma/adapter-libsql": "^7.5.0",
"@prisma/client": "^7.5.0",
"googleapis": "^171.4.0",
"lucide-react": "^0.577.0",

View File

@@ -1,9 +1,16 @@
import "dotenv/config";
import { defineConfig, env } from "prisma/config";
import { defineConfig } from "prisma/config";
import { createClient } from "@libsql/client";
import { PrismaLibSQL } from "@prisma/adapter-libsql";
export default defineConfig({
schema: "prisma/schema.prisma",
datasource: {
url: env("DATABASE_URL") || "file:./dev.db",
migrate: {
adapter: async () => {
const libsql = createClient({
url: process.env.DATABASE_URL ?? "file:./dev.db",
});
return new PrismaLibSQL(libsql);
},
},
});

View File

@@ -2,13 +2,11 @@
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
engineType = "library"
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model Account {

View File

@@ -1,4 +1,6 @@
import { PrismaClient } from '@prisma/client'
import { PrismaLibSQL } from '@prisma/adapter-libsql'
import { createClient } from '@libsql/client'
const globalForPrisma = globalThis as unknown as {
prisma: PrismaClient | undefined
@@ -6,7 +8,12 @@ const globalForPrisma = globalThis as unknown as {
function getPrismaClient(): PrismaClient {
if (!globalForPrisma.prisma) {
const libsql = createClient({
url: process.env.DATABASE_URL ?? 'file:./dev.db',
})
const adapter = new PrismaLibSQL(libsql)
globalForPrisma.prisma = new PrismaClient({
adapter,
log: process.env.NODE_ENV === 'development' ? ['query', 'error', 'warn'] : ['error'],
})
}
@@ -15,8 +22,6 @@ function getPrismaClient(): PrismaClient {
// Use a Proxy so `new PrismaClient()` is only called when a property
// is first accessed (inside a request handler), NOT at module import time.
// This prevents PrismaClientConstructorValidationError during Next.js
// static analysis / "Collecting page data" phase.
export const prisma = new Proxy({} as PrismaClient, {
get(_target, prop) {
return Reflect.get(getPrismaClient(), prop)