eust-conciliation
Version:
49 lines (37 loc) • 1.2 kB
text/typescript
/* eslint-disable import/first */
// eslint-disable-next-line import/newline-after-import
import dotenv from 'dotenv';
dotenv.config();
import 'reflect-metadata';
import logger from '@zenvia/logger';
import { initDB } from './infra/db';
async function initAppLayers(): Promise<void> {
logger.info('Initializing app layers (Infra/Services) to inject dependencies');
await import('./infra');
await import('./application');
}
async function start(): Promise<void> {
logger.info('Initializing the application');
try {
await initDB();
await initAppLayers();
const { conciliationAutomationController } = await import('./presentation');
await conciliationAutomationController.execute();
} catch (error) {
// eslint-disable-next-line no-console
console.error(error);
logger.error('An error occurred while executing the application:', error);
process.exit(1);
}
}
const signalTraps: NodeJS.Signals[] = ['SIGTERM', 'SIGINT', 'SIGUSR2', 'SIGHUP'];
signalTraps.forEach((type) => {
process.once(type, async () => {
try {
logger.info('Caught interrupt signal');
} finally {
process.kill(process.pid, type);
}
});
});
start();