import { prisma } from "@/lib/db"; import { getEvent } from "@/lib/logging/context"; export interface GlobalServiceAvailability { telegramGlobal: boolean; ntfyGlobal: boolean; webPushGlobal: boolean; apiGlobal: boolean; moodLogGlobal: boolean; } export async function getGlobalServiceAvailability(): Promise { try { const settings = await prisma.appSettings.findUnique({ where: { id: "singleton" }, select: { telegramGlobal: true, ntfyGlobal: true, webPushGlobal: true, apiGlobal: true, moodLogGlobal: true, }, }); return { telegramGlobal: settings?.telegramGlobal ?? true, ntfyGlobal: settings?.ntfyGlobal ?? true, webPushGlobal: settings?.webPushGlobal ?? true, apiGlobal: settings?.apiGlobal ?? true, moodLogGlobal: settings?.moodLogGlobal ?? true, }; } catch { getEvent()?.addWarning("Failed to load app settings, using defaults"); return { telegramGlobal: true, ntfyGlobal: true, webPushGlobal: true, apiGlobal: true, moodLogGlobal: true, }; } } export async function isApiGloballyEnabled(): Promise { const settings = await getGlobalServiceAvailability(); return settings.apiGlobal; } export interface ReminderThresholds { lateMinutes: number; missedMinutes: number; } export async function getReminderThresholds(): Promise { try { const settings = await prisma.appSettings.findUnique({ where: { id: "singleton" }, select: { reminderLateMinutes: true, reminderMissedMinutes: true, }, }); return { lateMinutes: settings?.reminderLateMinutes ?? 120, missedMinutes: settings?.reminderMissedMinutes ?? 240, }; } catch { getEvent()?.addWarning( "Failed to load reminder thresholds, using defaults", ); return { lateMinutes: 120, missedMinutes: 240 }; } }