2025-03-05 15:39:31 +01:00
|
|
|
const express = require('express');
|
|
|
|
|
|
2025-03-08 02:47:37 +01:00
|
|
|
async function buildDependencies() {
|
2025-03-05 15:39:31 +01:00
|
|
|
const dependencies = {};
|
2025-03-05 16:23:36 +01:00
|
|
|
const errors = require('./errors');
|
2025-03-06 01:09:45 +01:00
|
|
|
const constants = require('./constants');
|
2025-03-08 00:25:56 +01:00
|
|
|
|
2025-03-08 00:29:52 +01:00
|
|
|
const sequelize = require('./database');
|
|
|
|
|
const { DataTypes } = require('sequelize');
|
2025-03-08 00:25:56 +01:00
|
|
|
const ModelsProvider = require('./models');
|
2025-03-08 00:29:52 +01:00
|
|
|
const models = new ModelsProvider({ sequelize, DataTypes }).provide();
|
2025-03-06 01:09:45 +01:00
|
|
|
|
2025-03-08 02:47:37 +01:00
|
|
|
const AssociationsDefiner = require('./associations');
|
|
|
|
|
new AssociationsDefiner({ models, DataTypes }).define();
|
|
|
|
|
|
|
|
|
|
sequelize
|
|
|
|
|
.sync({ alter: true })
|
|
|
|
|
.then(() => {
|
|
|
|
|
console.log('Database synced');
|
|
|
|
|
})
|
|
|
|
|
.catch((err) => {
|
|
|
|
|
console.error('Error syncing the database:', err);
|
|
|
|
|
});
|
|
|
|
|
|
2025-03-06 01:09:45 +01:00
|
|
|
const ServicesProvider = require('./services');
|
2025-03-07 16:24:51 +01:00
|
|
|
const services = new ServicesProvider({
|
|
|
|
|
models,
|
|
|
|
|
constants,
|
|
|
|
|
errors,
|
|
|
|
|
}).provide();
|
2025-03-07 12:52:15 +01:00
|
|
|
dependencies.services = services;
|
2025-03-05 15:55:13 +01:00
|
|
|
|
2025-03-06 01:01:12 +01:00
|
|
|
const MiddlewaresProvider = require('./middlewares');
|
|
|
|
|
const middlewares = new MiddlewaresProvider({
|
|
|
|
|
constants,
|
|
|
|
|
sessionService: services.sessionService,
|
|
|
|
|
profileService: services.profileService,
|
|
|
|
|
}).provide();
|
|
|
|
|
dependencies.middlewares = middlewares;
|
|
|
|
|
|
2025-03-05 15:39:31 +01:00
|
|
|
const WebRoutesProvider = require('./routes/webRoutes');
|
2025-03-05 15:55:13 +01:00
|
|
|
const webRoutesProvider = new WebRoutesProvider({
|
|
|
|
|
express,
|
|
|
|
|
middlewares,
|
2025-03-05 16:21:37 +01:00
|
|
|
invitesService: services.invitesService,
|
2025-03-05 15:55:13 +01:00
|
|
|
});
|
2025-03-05 15:39:31 +01:00
|
|
|
dependencies.webRoutes = webRoutesProvider.provide();
|
2025-03-05 16:04:44 +01:00
|
|
|
|
|
|
|
|
const ApiRoutesProvider = require('./routes/apiRoutes');
|
2025-03-05 16:23:36 +01:00
|
|
|
const apiRoutesProvider = new ApiRoutesProvider({
|
2025-03-05 16:29:51 +01:00
|
|
|
express,
|
2025-03-05 16:23:36 +01:00
|
|
|
middlewares,
|
|
|
|
|
services,
|
|
|
|
|
errors,
|
|
|
|
|
});
|
2025-03-05 16:04:44 +01:00
|
|
|
dependencies.apiRoutes = apiRoutesProvider.provide();
|
2025-03-05 15:39:31 +01:00
|
|
|
return dependencies;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = { buildDependencies };
|