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