60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
const express = require('express');
|
|
|
|
async function buildDependencies() {
|
|
const dependencies = {};
|
|
const errors = require('./errors');
|
|
const constants = require('./constants');
|
|
|
|
const sequelize = require('./database');
|
|
const { DataTypes } = require('sequelize');
|
|
const ModelsProvider = require('./models');
|
|
const models = new ModelsProvider({ sequelize, DataTypes }).provide();
|
|
|
|
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);
|
|
});
|
|
|
|
const ServicesProvider = require('./services');
|
|
const services = new ServicesProvider({
|
|
models,
|
|
constants,
|
|
errors,
|
|
}).provide();
|
|
dependencies.services = services;
|
|
|
|
const MiddlewaresProvider = require('./middlewares');
|
|
const middlewares = new MiddlewaresProvider({
|
|
constants,
|
|
sessionService: services.sessionService,
|
|
profileService: services.profileService,
|
|
}).provide();
|
|
dependencies.middlewares = middlewares;
|
|
|
|
const WebRoutesProvider = require('./routes/webRoutes');
|
|
const webRoutesProvider = new WebRoutesProvider({
|
|
express,
|
|
middlewares,
|
|
invitesService: services.invitesService,
|
|
});
|
|
dependencies.webRoutes = webRoutesProvider.provide();
|
|
|
|
const ApiRoutesProvider = require('./routes/apiRoutes');
|
|
const apiRoutesProvider = new ApiRoutesProvider({
|
|
express,
|
|
middlewares,
|
|
services,
|
|
errors,
|
|
});
|
|
dependencies.apiRoutes = apiRoutesProvider.provide();
|
|
return dependencies;
|
|
}
|
|
|
|
module.exports = { buildDependencies };
|