65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
const express = require('express');
|
|
const mongoose = require('mongoose');
|
|
const cors = require('cors');
|
|
const config = require('./config');
|
|
const setupContainer = require('./di/container');
|
|
const errorHandler = require('./middleware/errorHandler');
|
|
const mockAuthMiddleware = require('./middleware/auth.mock');
|
|
const { seedDatabase } = require('./seed');
|
|
|
|
const legacyApiRoutes = require('./routes/api');
|
|
|
|
const app = express();
|
|
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
|
|
const container = setupContainer();
|
|
|
|
const sequelize = container.resolve('sequelize');
|
|
|
|
mongoose
|
|
.connect(config.database.mongo.uri, config.database.mongo.options)
|
|
.then(() => console.log('Connected to MongoDB'))
|
|
.catch((err) => {
|
|
console.error('MongoDB connection error:', err);
|
|
process.exit(1);
|
|
});
|
|
|
|
app.use('/api', mockAuthMiddleware(sequelize));
|
|
|
|
app.use('/api/legacy', legacyApiRoutes(sequelize));
|
|
|
|
const v1Routes = require('./routes/v1');
|
|
app.use('/api/v1', v1Routes(container));
|
|
app.use('/api', v1Routes(container));
|
|
|
|
const healthRoutes = require('./routes/health.routes');
|
|
app.use('/', healthRoutes({ sequelize, mongoose }));
|
|
|
|
app.use(errorHandler);
|
|
|
|
sequelize
|
|
.authenticate()
|
|
.then(() => {
|
|
console.log('Connected to PostgreSQL');
|
|
return sequelize.sync({ force: true });
|
|
})
|
|
.then(() => {
|
|
console.log('PostgreSQL models synchronized');
|
|
return seedDatabase(sequelize);
|
|
})
|
|
.then(() => {
|
|
app.listen(config.port, () => {
|
|
console.log(`Server is running on http://localhost:${config.port}`);
|
|
console.log(`Environment: ${config.nodeEnv}`);
|
|
console.log(`API v1 endpoints available at /api/v1/`);
|
|
console.log(`Legacy endpoints available at /api/legacy/`);
|
|
console.log(`Health check available at /health`);
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
console.error('PostgreSQL connection or sync error:', err);
|
|
process.exit(1);
|
|
});
|