const express = require('express'); function buildDependencies() { const dependencies = {}; const errors = require('./errors'); const constants = require('./constants'); const sequelize = require('./database/database'); const { DataTypes } = require('sequelize'); const ModelsProvider = require('./models'); const models = new ModelsProvider({ sequelize, DataTypes }).provide(); const AssociationsDefiner = require('./database/associations'); new AssociationsDefiner({ models, DataTypes }).define(); 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 };