Files
GKNB_MSTM071/Backend/harmadik gyakorlat_minta/src/index.js
T
2026-03-04 20:02:39 +01:00

63 lines
1.5 KiB
JavaScript

import express from 'express';
import cookieParser from 'cookie-parser';
import dotenv from 'dotenv';
dotenv.config();
import databaseClient from './infrastructure/database/prisma.js';
import redisClient from './infrastructure/database/redis.js';
import authRoutes from './api/routes/authRoutes.js';
import blogRoutes from './api/routes/blogRoutes.js';
import { errorHandler, notFoundHandler } from './api/middlewares/errorHandler.js';
const app = express();
const PORT = process.env.PORT || 3001;
// Middleware
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser(process.env.COOKIE_SECRET));
// Database connection
await databaseClient.connect();
// Health check
app.get('/health', (req, res) => {
res.json({
status: 'OK',
timestamp: new Date().toISOString(),
environment: process.env.NODE_ENV
});
});
// Routes
app.use('/api/auth', authRoutes);
app.use('/api/blogs', blogRoutes);
// Error handling
app.use(notFoundHandler);
app.use(errorHandler);
// Graceful shutdown
process.on('SIGINT', async () => {
console.log('\n🛑 Shutting down gracefully...');
await databaseClient.disconnect();
await redisClient.disconnect();
process.exit(0);
});
process.on('SIGTERM', async () => {
console.log('\n🛑 Shutting down gracefully...');
await databaseClient.disconnect();
await redisClient.disconnect();
process.exit(0);
});
// Start server
app.listen(PORT, () => {
console.log(`✅ Server running on http://localhost:${PORT}`);
console.log(`📊 Environment: ${process.env.NODE_ENV}`);
});