51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
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 };
|