'use strict'; const { getSetting, setSetting } = require('../db/database'); const SYNC_DAYS_DEFAULT = 90; function encryptionKeyReady() { const key = process.env.TOKEN_ENCRYPTION_KEY || ''; return Buffer.from(key, 'utf8').length >= 32; } function getBankSyncConfig() { const dbValue = getSetting('bank_sync_enabled'); const envValue = process.env.BANK_SYNC_ENABLED; let enabled; if (dbValue !== null && dbValue !== undefined && dbValue !== '') { enabled = dbValue === 'true'; } else if (envValue !== undefined && envValue !== '') { enabled = envValue === 'true'; } else { enabled = false; } const syncDaysDb = parseInt(getSetting('simplefin_sync_days') || '', 10); const syncDaysEnv = parseInt(process.env.SIMPLEFIN_SYNC_DAYS || '', 10); const syncDays = Number.isFinite(syncDaysDb) && syncDaysDb > 0 ? syncDaysDb : Number.isFinite(syncDaysEnv) && syncDaysEnv > 0 ? syncDaysEnv : SYNC_DAYS_DEFAULT; return { enabled, encryption_key_set: encryptionKeyReady(), sync_days: syncDays, }; } function setBankSyncEnabled(enabled) { if (enabled && !encryptionKeyReady()) { const err = new Error('TOKEN_ENCRYPTION_KEY must be set (32+ chars) before enabling bank sync'); err.status = 400; throw err; } setSetting('bank_sync_enabled', enabled ? 'true' : 'false'); return getBankSyncConfig(); } module.exports = { getBankSyncConfig, setBankSyncEnabled };