40 lines
864 B
TypeScript
40 lines
864 B
TypeScript
import { Server } from 'http';
|
|
import app from './app';
|
|
import prisma from './client';
|
|
import config from './config/config';
|
|
import logger from './config/logger';
|
|
|
|
let server: Server;
|
|
prisma.$connect().then(() => {
|
|
logger.info('Connected to SQL Database');
|
|
server = app.listen(config.port, () => {
|
|
logger.info(`Listening to port ${config.port}`);
|
|
});
|
|
});
|
|
|
|
const exitHandler = () => {
|
|
if (server) {
|
|
server.close(() => {
|
|
logger.info('Server closed');
|
|
process.exit(1);
|
|
});
|
|
} else {
|
|
process.exit(1);
|
|
}
|
|
};
|
|
|
|
const unexpectedErrorHandler = (error: unknown) => {
|
|
logger.error(error);
|
|
exitHandler();
|
|
};
|
|
|
|
process.on('uncaughtException', unexpectedErrorHandler);
|
|
process.on('unhandledRejection', unexpectedErrorHandler);
|
|
|
|
process.on('SIGTERM', () => {
|
|
logger.info('SIGTERM received');
|
|
if (server) {
|
|
server.close();
|
|
}
|
|
});
|