InitalCommit
This commit is contained in:
84
server.js
Normal file
84
server.js
Normal file
@@ -0,0 +1,84 @@
|
||||
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 || 3002;
|
||||
|
||||
// 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');
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user