Migration to Prisma 7

This commit is contained in:
CanbiZ
2025-11-28 12:55:32 +01:00
parent 2d7176914e
commit 1a5881c935
6 changed files with 40 additions and 7 deletions

3
.gitignore vendored
View File

@@ -16,6 +16,9 @@
db.sqlite db.sqlite
data/settings.db data/settings.db
# prisma generated client
/prisma/generated/
# ssh keys (sensitive) # ssh keys (sensitive)
data/ssh-keys/ data/ssh-keys/

View File

@@ -4,16 +4,19 @@
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
"build": "next build --webpack", "build": "prisma generate && next build --webpack",
"check": "eslint . && tsc --noEmit", "check": "eslint . && tsc --noEmit",
"dev": "next dev --webpack", "dev": "next dev --webpack",
"dev:server": "node server.js", "dev:server": "node server.js",
"dev:next": "next dev --webpack", "dev:next": "next dev --webpack",
"format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,mdx}\" --cache", "format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,mdx}\" --cache",
"format:write": "prettier --write \"**/*.{ts,tsx,js,jsx,mdx}\" --cache", "format:write": "prettier --write \"**/*.{ts,tsx,js,jsx,mdx}\" --cache",
"generate": "prisma generate",
"lint": "eslint .", "lint": "eslint .",
"lint:fix": "eslint --fix .", "lint:fix": "eslint --fix .",
"migrate": "prisma migrate dev",
"preview": "next build && next start", "preview": "next build && next start",
"postinstall": "prisma generate",
"start": "node server.js", "start": "node server.js",
"test": "vitest", "test": "vitest",
"test:ui": "vitest --ui", "test:ui": "vitest --ui",
@@ -22,7 +25,9 @@
"typecheck": "tsc --noEmit" "typecheck": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@prisma/adapter-better-sqlite3": "^7.0.1",
"@prisma/client": "^7.0.1", "@prisma/client": "^7.0.1",
"better-sqlite3": "^11.7.0",
"@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-slot": "^1.2.4",
"@t3-oss/env-nextjs": "^0.13.8", "@t3-oss/env-nextjs": "^0.13.8",
@@ -81,7 +86,7 @@
"postcss": "^8.5.6", "postcss": "^8.5.6",
"prettier": "^3.7.1", "prettier": "^3.7.1",
"prettier-plugin-tailwindcss": "^0.7.1", "prettier-plugin-tailwindcss": "^0.7.1",
"prisma": "^6.19.0", "prisma": "^7.0.1",
"tailwindcss": "^4.1.17", "tailwindcss": "^4.1.17",
"typescript": "^5.9.3", "typescript": "^5.9.3",
"typescript-eslint": "^8.48.0", "typescript-eslint": "^8.48.0",

16
prisma.config.ts Normal file
View File

@@ -0,0 +1,16 @@
import 'dotenv/config'
import { defineConfig } from 'prisma/config'
export default defineConfig({
earlyAccess: true,
schema: 'prisma/schema.prisma',
migrate: {
migrations: 'prisma/migrations',
},
studio: {
adapter: async () => {
const { PrismaBetterSQLite3 } = await import('@prisma/adapter-better-sqlite3')
return new PrismaBetterSQLite3({ url: process.env.DATABASE_URL! })
},
},
})

View File

@@ -1,10 +1,10 @@
generator client { generator client {
provider = "prisma-client-js" provider = "prisma-client"
output = "./generated/prisma"
} }
datasource db { datasource db {
provider = "sqlite" provider = "sqlite"
url = env("DATABASE_URL")
} }
model InstalledScript { model InstalledScript {

View File

@@ -1,7 +1,11 @@
import { PrismaClient } from '@prisma/client'; import 'dotenv/config'
import { PrismaClient } from '../../prisma/generated/prisma/client.js'
import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3'
const globalForPrisma = globalThis; const globalForPrisma = globalThis;
export const prisma = globalForPrisma.prisma ?? new PrismaClient(); const adapter = new PrismaBetterSQLite3({ url: process.env.DATABASE_URL! });
export const prisma = globalForPrisma.prisma ?? new PrismaClient({ adapter });
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma; if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;

View File

@@ -1,8 +1,13 @@
import { PrismaClient } from '@prisma/client'; import 'dotenv/config'
import { PrismaClient } from '../../prisma/generated/prisma/client.js'
import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3'
const globalForPrisma = globalThis as { prisma?: PrismaClient }; const globalForPrisma = globalThis as { prisma?: PrismaClient };
const adapter = new PrismaBetterSQLite3({ url: process.env.DATABASE_URL! });
export const prisma: PrismaClient = globalForPrisma.prisma ?? new PrismaClient({ export const prisma: PrismaClient = globalForPrisma.prisma ?? new PrismaClient({
adapter,
log: ['warn', 'error'] log: ['warn', 'error']
}); });