Initial commit

This commit is contained in:
Lorenzo Sanesi
2026-03-26 22:46:03 +01:00
commit 18e0e04700
80 changed files with 13114 additions and 0 deletions
+64
View File
@@ -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);
});