import { getDb } from './db' interface ScanConfig { schedule: string enabled: boolean lastScanAt: number | null } function getSetting(key: string): string | null { const db = getDb() const row = db .prepare('SELECT value FROM app_settings WHERE key = ?') .get(key) as { value: string } | undefined return row?.value ?? null } function setSetting(key: string, value: string): void { const db = getDb() db.prepare('INSERT OR REPLACE INTO app_settings (key, value) VALUES (?, ?)').run(key, value) } export function getScanConfig(): ScanConfig { const schedule = getSetting('scan_schedule') ?? '0 * * * *' const enabled = getSetting('scan_enabled') !== 'false' const lastRanRaw = getSetting('scan_last_ran') const lastScanAt = lastRanRaw && lastRanRaw.length > 0 ? parseInt(lastRanRaw, 10) : null return { schedule, enabled, lastScanAt } } export function updateScanConfig(schedule: string, enabled: boolean): void { setSetting('scan_schedule', schedule) setSetting('scan_enabled', enabled ? 'true' : 'false') } export function setScanLastRan(ts: number): void { setSetting('scan_last_ran', String(ts)) } // ─── AI Settings ───────────────────────────────────────────────────────────── interface AiConfig { endpoint: string model: string modelTagging: string modelDescribe: string modelExtract: string modelTranslate: string enabled: boolean } export function getAiConfig(): AiConfig { const endpoint = getSetting('ai_endpoint') ?? '' const model = getSetting('ai_model') ?? '' const modelTagging = getSetting('ai_model_tagging') ?? '' const modelDescribe = getSetting('ai_model_describe') ?? '' const modelExtract = getSetting('ai_model_extract') ?? '' const modelTranslate = getSetting('ai_model_translate') ?? '' const enabled = getSetting('ai_enabled') === 'true' return { endpoint, model, modelTagging, modelDescribe, modelExtract, modelTranslate, enabled } } export function updateAiConfig( endpoint: string, model: string, enabled: boolean, modelTagging?: string, modelDescribe?: string, modelExtract?: string, modelTranslate?: string, ): void { setSetting('ai_endpoint', endpoint) setSetting('ai_model', model) setSetting('ai_enabled', enabled ? 'true' : 'false') if (modelTagging !== undefined) setSetting('ai_model_tagging', modelTagging) if (modelDescribe !== undefined) setSetting('ai_model_describe', modelDescribe) if (modelExtract !== undefined) setSetting('ai_model_extract', modelExtract) if (modelTranslate !== undefined) setSetting('ai_model_translate', modelTranslate) } export function getPreferredLanguage(): string { return getSetting('preferred_language') ?? 'English' } export function setPreferredLanguage(language: string): void { setSetting('preferred_language', language) }