negyedik gyakorlat + megoldasok
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
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}`);
|
||||
});
|
||||
Reference in New Issue
Block a user