import * as DemoController from './controllers/demo'; import { makeLogger } from './helpers'; import Poller from './lib/poller'; import { setupViewManager } from './lib/view-manager'; import { initModels, Setting, User } from './models'; import { DEMO_MODE } from './shared/settings'; const log = makeLogger('init'); // Checks if the demo mode is enabled, and set it up if that's the case. async function checkDemoMode() { if (process.kresus.forceDemoMode) { // Enable the demo mode for every user (even though it does not make sense to have several users with the demo). const users = await User.all(); for (const user of users) { const isDemoModeEnabled = await Setting.findOrCreateDefaultBooleanValue( user.id, DEMO_MODE ); if (!isDemoModeEnabled) { try { log.info(`Setting up demo mode for user id ${user.id}...`); await DemoController.setupDemoMode(user.id); log.info('Done setting up demo mode...'); } catch (err) { log.error(`Fatal error when setting up demo mode for user ${user.login}: ${err.message} ${err.stack}`); } } } } } export default async function init() { try { // Keep the views in sync with the accounts. setupViewManager(); // Initialize models. await initModels(); await checkDemoMode(); // Start bank polling log.info('Starting bank accounts polling et al...'); await Poller.runAtStartup(); log.info("Server is ready, let's start the show!"); } catch (err) { log.error(`Error at initialization: Message: ${err.message} ${err.stack}`); } }