import 'reflect-metadata'; import '@config/env'; import { container } from 'tsyringe'; import { setupContainer } from '@config/container'; import App from '@/app'; import { AuthRoute } from '@routes/auth.route'; import { UsersRoute } from '@routes/users.route'; import { logger } from '@utils/logger'; // πŸ”§ ν•˜μ΄λΈŒλ¦¬λ“œ DI μ»¨ν…Œμ΄λ„ˆ μ„€μ • // Infrastructure(Repository) - λͺ…μ‹œμ  관리 // Business(Service) - λͺ…μ‹œμ  관리 // Presentation(Controller/Route) - μžλ™ μ£Όμž… setupContainer(); // 라우트 μΈμŠ€ν„΄μŠ€ 생성 const routes = [container.resolve(AuthRoute), container.resolve(UsersRoute)]; // μ•± μΈμŠ€ν„΄μŠ€ 생성 const appInstance = new App(routes); // μ„œλ²„ μ‹œμž‘ const server = appInstance.listen(); // Graceful Shutdown if (server && typeof server.close === 'function') { ['SIGINT', 'SIGTERM'].forEach((signal) => { process.on(signal, () => { logger.info(`Received ${signal}, closing server...`); server.close(() => { logger.info('HTTP server closed gracefully'); process.exit(0); }); }); }); } export default server;