EvalueTonSavoir/server/app.js

94 lines
3 KiB
JavaScript
Raw Normal View History

2024-03-29 20:08:34 -04:00
// Import API
const express = require("express");
const http = require("http");
const dotenv = require('dotenv');
2024-03-29 20:08:34 -04:00
// instantiate the db
const db = require('./config/db.js');
// instantiate the models
const quiz = require('./models/quiz.js');
const quizModel = new quiz(db);
const folders = require('./models/folders.js');
const foldersModel = new folders(db, quizModel);
const users = require('./models/users.js');
const userModel = new users(db, foldersModel);
const images = require('./models/images.js');
const imageModel = new images(db);
const {RoomRepository} = require('./models/room.js');
const roomRepModel = new RoomRepository(db);
// Instantiate the controllers
const QuizProviderOptions = {
provider: 'docker'
};
// instantiate the controllers
const usersController = require('./controllers/users.js');
const usersControllerInstance = new usersController(userModel);
const foldersController = require('./controllers/folders.js');
const foldersControllerInstance = new foldersController(foldersModel);
const quizController = require('./controllers/quiz.js');
const quizControllerInstance = new quizController(quizModel, foldersModel);
const imagesController = require('./controllers/images.js');
const imagesControllerInstance = new imagesController(imageModel);
const roomsController = require('./controllers/rooms.js');
const roomsControllerInstance = new roomsController(QuizProviderOptions,roomRepModel);
// export the controllers
module.exports.users = usersControllerInstance;
module.exports.folders = foldersControllerInstance;
module.exports.quizzes = quizControllerInstance;
module.exports.images = imagesControllerInstance;
module.exports.rooms = roomsControllerInstance;
//import routers (instantiate controllers as side effect)
2024-03-29 20:08:34 -04:00
const userRouter = require('./routers/users.js');
const folderRouter = require('./routers/folders.js');
const quizRouter = require('./routers/quiz.js');
const imagesRouter = require('./routers/images.js');
const roomRouter = require('./routers/rooms.js');
2024-12-06 21:01:23 -05:00
const healthRouter = require('./routers/health.js');
2024-03-29 20:08:34 -04:00
// Setup environment
2024-03-29 20:08:34 -04:00
dotenv.config();
const errorHandler = require("./middleware/errorHandler.js");
// Start app
const app = express();
const cors = require("cors");
const bodyParser = require('body-parser');
let server = http.createServer(app);
let isDev = process.env.NODE_ENV === 'development';
console.log(`Environnement: ${process.env.NODE_ENV} (${isDev ? 'dev' : 'prod'})`);
2024-03-29 20:08:34 -04:00
app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
// Create routes
app.use('/api/user', userRouter);
app.use('/api/folder', folderRouter);
app.use('/api/quiz', quizRouter);
app.use('/api/image', imagesRouter);
app.use('/api/room', roomRouter);
2024-12-06 21:01:23 -05:00
app.use('/health', healthRouter);
2024-03-29 20:08:34 -04:00
app.use(errorHandler);
2024-03-29 20:08:34 -04:00
// Start server
async function start() {
2024-04-05 20:10:59 -04:00
const port = process.env.PORT || 4400;
2024-03-29 20:08:34 -04:00
// Check DB connection
await db.connect();
2024-03-29 20:08:34 -04:00
db.getConnection();
console.log(`Connexion MongoDB établie`);
server.listen(port, () => {
console.log(`Serveur écoutant sur le port ${port}`);
});
}
start();