44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
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);
|
|
});
|