require('dotenv').config(); const express = require('express'); const cors = require('cors'); const path = require('path'); const { getConnection, closeConnection } = require('./config/database'); const searchRoutes = require('./routes/search'); const app = express(); // Standardmäßig läuft der Entwicklungsserver lokal auf 3002. // Im Docker-Container wird der Port über die Umgebungsvariable PORT (z.B. 3001) gesetzt. const PORT = process.env.PORT || 3001; // Middleware app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); // Static files app.use(express.static(path.join(__dirname, 'public'))); // API Routes app.use('/api/search', searchRoutes); // Health check endpoint app.get('/api/health', async (req, res) => { try { await getConnection(); res.json({ status: 'ok', message: 'Server und Datenbankverbindung funktionieren', timestamp: new Date().toISOString() }); } catch (error) { res.status(500).json({ status: 'error', message: 'Datenbankverbindung fehlgeschlagen', error: error.message }); } }); // Root route app.get('/', (req, res) => { res.sendFile(path.join(__dirname, 'public', 'index.html')); }); // Error handling middleware app.use((err, req, res, next) => { console.error('Server Error:', err); res.status(500).json({ success: false, error: 'Interner Serverfehler', message: err.message }); }); // Graceful shutdown process.on('SIGINT', async () => { console.log('\nServer wird heruntergefahren...'); await closeConnection(); process.exit(0); }); process.on('SIGTERM', async () => { console.log('\nServer wird heruntergefahren...'); await closeConnection(); process.exit(0); }); // Start server app.listen(PORT, async () => { console.log(`\n===========================================`); console.log(`🚀 Server läuft auf http://localhost:${PORT}`); console.log(`===========================================\n`); try { await getConnection(); console.log('✅ Datenbankverbindung erfolgreich hergestellt\n'); } catch (error) { console.error('❌ Datenbankverbindung fehlgeschlagen:', error.message); console.error(' Bitte überprüfen Sie Ihre .env Konfiguration\n'); } });