diff --git a/electron/src/main/main.ts b/electron/src/main/main.ts index 033146f..25761d0 100644 --- a/electron/src/main/main.ts +++ b/electron/src/main/main.ts @@ -4,6 +4,41 @@ import { DatabaseManager } from '../services/database/database.js'; import { setupIpcHandlers } from '../services/ipc/index.js'; import { BackupService } from '../services/backup/index.js'; import { UpdateService } from '../services/update/update.service.js'; +import * as path from 'node:path'; +import * as os from 'node:os'; + +/** + * Configure Prisma paths for production (packaged app) + * Ensures Prisma can find query engine binaries in app.asar.unpacked + */ +if (app.isPackaged) { + const platform = os.platform(); + const arch = os.arch(); + + let queryEngineFileName: string; + if (platform === 'win32') { + queryEngineFileName = 'query_engine-windows.dll.node'; + } else if (platform === 'darwin') { + queryEngineFileName = + arch === 'arm64' + ? 'libquery_engine-darwin-arm64.dylib.node' + : 'libquery_engine-darwin.dylib.node'; + } else { + queryEngineFileName = 'libquery_engine-debian-openssl-3.0.x.so.node'; + } + + const prismaPath = path.join( + process.resourcesPath, + 'app.asar.unpacked', + 'node_modules', + '.prisma', + 'client', + ); + const queryEnginePath = path.join(prismaPath, queryEngineFileName); + + process.env.PRISMA_QUERY_ENGINE_LIBRARY = queryEnginePath; + process.env.PRISMA_QUERY_ENGINE_BINARY = queryEnginePath; +} let windowManager: WindowManager | null = null; let dbManager: DatabaseManager | null = null; diff --git a/package.json b/package.json index 5e26434..fd23806 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ }, "scripts": { "start": "ng serve", - "build": "ng build && tsc --project electron/build/tsconfig.json && tsc --project electron/build/tsconfig.preload.json", - "dev": "ng build --configuration=development && tsc --project electron/build/tsconfig.json && tsc --project electron/build/tsconfig.preload.json && electron .", + "build": "npm run prisma:generate && ng build && tsc --project electron/build/tsconfig.json && tsc --project electron/build/tsconfig.preload.json", + "dev": "npm run prisma:generate && ng build --configuration=development && tsc --project electron/build/tsconfig.json && tsc --project electron/build/tsconfig.preload.json && electron .", "dist": "npm run build && electron-builder", "dist:win": "npm run build && electron-builder --win", "dist:linux": "npm run build && electron-builder --linux", @@ -50,6 +50,7 @@ }, "files": [ "dist/**/*", + "node_modules/.prisma/**/*", "node_modules/@prisma/client/**/*", "node_modules/@prisma/adapter-better-sqlite3/**/*", "node_modules/better-sqlite3/**/*", @@ -64,6 +65,7 @@ "dist/electron/generated/**/*", "prisma/template.db" ], + "asar": true, "win": { "target": [ { @@ -216,4 +218,4 @@ "prettier --write" ] } -} \ No newline at end of file +}