From edeaddb3835a143c1168ea726c4b505170829920 Mon Sep 17 00:00:00 2001 From: xRangerDE Date: Mon, 11 May 2026 22:05:29 +0200 Subject: [PATCH] feat(db): wire migrator into app startup (fail-soft, lazy require) Migrator runs on app.whenReady before pollers/createWindow. Lazy require keeps native better-sqlite3 errors from blocking app startup. Result is logged via appendDebugLog for diagnosis. Verified via npm run test:e2e (0 issues, app starts cleanly). Co-Authored-By: Claude Opus 4.7 (1M context) --- src/main.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main.ts b/src/main.ts index db754cb..f277bad 100644 --- a/src/main.ts +++ b/src/main.ts @@ -7211,6 +7211,27 @@ app.whenReady().then(() => { refreshBundledToolPaths(true); startMetadataCacheCleanup(); startDebugLogFlushTimer(); + + // SQLite-Shadow-Migration (Plan 02 / v5.0.0-alpha.1). Idempotent + fail-soft — + // bei Fehler bleibt JSON der Master. Lazy require, damit Native-Build-Fehler + // den App-Start nicht verhindern. + try { + const { openDatabase } = require('./main/infra/db'); + const { migrateJsonToSqlite } = require('./main/domain/migrator'); + const dbPath = path.join(APPDATA_DIR, 'app.db'); + const db = openDatabase(dbPath); + try { + const result = migrateJsonToSqlite({ db, appDataDir: APPDATA_DIR }); + appendDebugLog('sqlite-migrator', result); + } finally { + db.close(); + } + } catch (e) { + appendDebugLog('sqlite-migrator-failed', { + error: e instanceof Error ? e.message : String(e), + }); + } + restartAutoRecordPoller(); restartAutoVodPoller(); restartLiveStatusPoller();