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 <noreply@anthropic.com>
This commit is contained in:
2026-04-08 12:23:26 +05:00
parent e77588deb8
commit 58a61d6f04
+17 -8
View File
@@ -44,17 +44,26 @@ export type Settings = Record<SettingsKey, string>;
// ── Getters ─────────────────────────────────────────────────────────────────── // ── Getters ───────────────────────────────────────────────────────────────────
export async function getSettings(): Promise<Settings> { export async function getSettings(): Promise<Settings> {
const rows = await prisma.settings.findMany(); try {
const stored: Record<string, string> = {}; const rows = await prisma.settings.findMany();
for (const row of rows) stored[row.key] = row.value; const stored: Record<string, string> = {};
return Object.fromEntries( for (const row of rows) stored[row.key] = row.value;
Object.entries(SETTINGS_DEFAULTS).map(([k, v]) => [k, stored[k] ?? v]) return Object.fromEntries(
) as Settings; 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<string> { export async function getSetting(key: SettingsKey): Promise<string> {
const row = await prisma.settings.findUnique({ where: { key } }); try {
return row?.value ?? SETTINGS_DEFAULTS[key]; const row = await prisma.settings.findUnique({ where: { key } });
return row?.value ?? SETTINGS_DEFAULTS[key];
} catch {
return SETTINGS_DEFAULTS[key];
}
} }
// ── Convenience helpers ─────────────────────────────────────────────────────── // ── Convenience helpers ───────────────────────────────────────────────────────