From 58a61d6f04d2bde32012058f3cd76b364febe859 Mon Sep 17 00:00:00 2001 From: dmitriylaukhin Date: Wed, 8 Apr 2026 12:23:26 +0500 Subject: [PATCH] Fix settings: catch DB errors at build time, return defaults getSettings() and getSetting() now fall back to defaults when the database is unavailable (e.g., during Docker image build). Co-Authored-By: Claude Sonnet 4.6 --- src/lib/settings.ts | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/lib/settings.ts b/src/lib/settings.ts index 15a6069..b03ab43 100644 --- a/src/lib/settings.ts +++ b/src/lib/settings.ts @@ -44,17 +44,26 @@ export type Settings = Record; // ── Getters ─────────────────────────────────────────────────────────────────── export async function getSettings(): Promise { - const rows = await prisma.settings.findMany(); - const stored: Record = {}; - for (const row of rows) stored[row.key] = row.value; - return Object.fromEntries( - Object.entries(SETTINGS_DEFAULTS).map(([k, v]) => [k, stored[k] ?? v]) - ) as Settings; + try { + const rows = await prisma.settings.findMany(); + const stored: Record = {}; + for (const row of rows) stored[row.key] = row.value; + return Object.fromEntries( + Object.entries(SETTINGS_DEFAULTS).map(([k, v]) => [k, stored[k] ?? v]) + ) as Settings; + } catch { + // DB unavailable at build time — return defaults + return { ...SETTINGS_DEFAULTS } as Settings; + } } export async function getSetting(key: SettingsKey): Promise { - const row = await prisma.settings.findUnique({ where: { key } }); - return row?.value ?? SETTINGS_DEFAULTS[key]; + try { + const row = await prisma.settings.findUnique({ where: { key } }); + return row?.value ?? SETTINGS_DEFAULTS[key]; + } catch { + return SETTINGS_DEFAULTS[key]; + } } // ── Convenience helpers ───────────────────────────────────────────────────────