import knex from 'knex'; import knexConfig from './db/knexfile'; import app from './app'; import { env, initEnv, getVaultToken } from './config/env'; import { loadJwtKeysFromVault } from './services/jwt.service'; import { logger } from './lib/logger'; async function main() { logger.info(`Wallet service instance started with id ${logger.instanceId}`); await initEnv(); // Load JWT public keys from Vault if available const vaultToken = getVaultToken(); if (vaultToken && env.vault.addr) { await loadJwtKeysFromVault( env.vault.addr, vaultToken, env.vault.mount, env.vault.jwtKidPath, env.vault.jwtKidsPrefix, ); } else { logger.warn('JWT keys not loaded: Vault not available'); } const db = knex(knexConfig); logger.info('Running migrations...'); await db.migrate.latest(); logger.info('Migrations complete'); await db.destroy(); app.listen(env.port, () => { logger.info(`Server running on port ${env.port}`); }); } main().catch((err) => { logger.error(`Failed to start: ${err.message}`); process.exit(1); });