BillTracker/services/bankSyncConfigService.js

46 lines
1.2 KiB
JavaScript

'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) {
setSetting('bank_sync_enabled', enabled ? 'true' : 'false');
return getBankSyncConfig();
}
module.exports = { getBankSyncConfig, setBankSyncEnabled };