migration to typescript
This commit is contained in:
parent
924000b084
commit
9fde77468a
41 changed files with 11952 additions and 10164 deletions
52
Backend/src/server.ts
Normal file
52
Backend/src/server.ts
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
import 'reflect-metadata';
|
||||
import { createApp } from './app';
|
||||
import { config } from './config';
|
||||
import { logger } from './config/logger';
|
||||
import { prisma } from './config/database';
|
||||
|
||||
async function startServer() {
|
||||
try {
|
||||
// Test database connection
|
||||
await prisma.$connect();
|
||||
logger.info('Database connected successfully');
|
||||
|
||||
// Create Express app
|
||||
const app = createApp();
|
||||
|
||||
// Start server
|
||||
const server = app.listen(config.port, () => {
|
||||
logger.info(`Server running on ${config.appUrl}`);
|
||||
logger.info(`Environment: ${config.nodeEnv}`);
|
||||
logger.info(`Swagger docs available at ${config.appUrl}/api-docs`);
|
||||
});
|
||||
|
||||
// Graceful shutdown
|
||||
const gracefulShutdown = async (signal: string) => {
|
||||
logger.info(`${signal} received, shutting down gracefully`);
|
||||
|
||||
server.close(async () => {
|
||||
logger.info('HTTP server closed');
|
||||
|
||||
await prisma.$disconnect();
|
||||
logger.info('Database disconnected');
|
||||
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
// Force shutdown after 10 seconds
|
||||
setTimeout(() => {
|
||||
logger.error('Forced shutdown after timeout');
|
||||
process.exit(1);
|
||||
}, 10000);
|
||||
};
|
||||
|
||||
process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
|
||||
process.on('SIGINT', () => gracefulShutdown('SIGINT'));
|
||||
|
||||
} catch (error) {
|
||||
logger.error('Failed to start server', { error });
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
startServer();
|
||||
Loading…
Add table
Add a link
Reference in a new issue