secajs/src/dependencies.js

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 };