const express = require('express'); const cors = require('cors'); const path = require('path'); const { initializeDatabase } = require('./db'); const { runMigrations } = require('./migrate'); const travelPlanRoutes = require('./routes/travelPlans'); const basePointsRoutes = require('./routes/basePoints'); const uploadsRoutes = require('./routes/uploads'); const { router: authRoutes } = require('./routes/auth'); const setupRoutes = require('./routes/setup'); const app = express(); const PORT = process.env.PORT || 3000; // 미들웨어 app.use(cors()); app.use(express.json()); // 정적 파일 제공 (업로드된 이미지) app.use('/uploads', express.static(path.join(__dirname, 'uploads'))); // 로그 미들웨어 app.use((req, res, next) => { console.log(`${req.method} ${req.path}`); next(); }); // 라우트 app.use('/api/auth', authRoutes); app.use('/api/setup', setupRoutes); app.use('/api/travel-plans', travelPlanRoutes); app.use('/api/base-points', basePointsRoutes); app.use('/api/uploads', uploadsRoutes); // 헬스 체크 app.get('/health', (req, res) => { res.json({ status: 'ok', timestamp: new Date().toISOString() }); }); // 에러 핸들러 app.use((err, req, res, next) => { console.error('Error:', err); res.status(500).json({ error: err.message }); }); // 서버 시작 async function startServer() { try { // 데이터베이스 초기화 (기존 스키마) await initializeDatabase(); // 마이그레이션 실행 (새로운 기능 추가) await runMigrations(); app.listen(PORT, '0.0.0.0', () => { console.log(`🚀 Server running on port ${PORT}`); console.log(`📊 API available at http://localhost:${PORT}`); console.log(`🗄️ Database: Using existing kumamoto_map database`); }); } catch (error) { console.error('Failed to start server:', error); process.exit(1); } } startServer();