Initial commit
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
const { createContainer, asClass, asFunction, asValue } = require('awilix');
|
||||
const { Sequelize } = require('sequelize');
|
||||
const mongoose = require('mongoose');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const config = require('../config');
|
||||
|
||||
function setupContainer() {
|
||||
const container = createContainer();
|
||||
|
||||
container.register({
|
||||
sequelize: asFunction(() => {
|
||||
const sequelize = new Sequelize(
|
||||
config.database.postgres.uri,
|
||||
config.database.postgres.options
|
||||
);
|
||||
|
||||
const modelsDir = path.join(__dirname, '../models');
|
||||
fs.readdirSync(modelsDir)
|
||||
.filter(
|
||||
(file) =>
|
||||
file.indexOf('.') !== 0 &&
|
||||
file.slice(-3) === '.js' &&
|
||||
file !== 'bet.model.js' &&
|
||||
file !== 'associations.js'
|
||||
)
|
||||
.forEach((file) => {
|
||||
require(path.join(modelsDir, file))(sequelize);
|
||||
});
|
||||
|
||||
const defineAssociations = require('../models/associations');
|
||||
defineAssociations(sequelize);
|
||||
|
||||
return sequelize;
|
||||
}).singleton(),
|
||||
|
||||
mongoose: asValue(mongoose),
|
||||
});
|
||||
|
||||
container.register({
|
||||
usersRepository: asClass(
|
||||
require('../repositories/postgres/users.repository')
|
||||
).scoped(),
|
||||
groupsRepository: asClass(
|
||||
require('../repositories/postgres/groups.repository')
|
||||
).scoped(),
|
||||
friendshipsRepository: asClass(
|
||||
require('../repositories/postgres/friendships.repository')
|
||||
).scoped(),
|
||||
friendRequestsRepository: asClass(
|
||||
require('../repositories/postgres/friendRequests.repository')
|
||||
).scoped(),
|
||||
betsRepository: asClass(
|
||||
require('../repositories/mongo/bets.repository')
|
||||
).scoped(),
|
||||
});
|
||||
|
||||
container.register({
|
||||
dataStitchingService: asClass(
|
||||
require('../services/data-stitching.service')
|
||||
).scoped(),
|
||||
usersService: asClass(require('../services/users.service')).scoped(),
|
||||
groupsService: asClass(require('../services/groups.service')).scoped(),
|
||||
friendsService: asClass(require('../services/friends.service')).scoped(),
|
||||
betsService: asClass(require('../services/bets.service')).scoped(),
|
||||
});
|
||||
|
||||
container.register({
|
||||
betsController: asClass(require('../controllers/bets.controller')).scoped(),
|
||||
groupsController: asClass(require('../controllers/groups.controller')).scoped(),
|
||||
usersController: asClass(require('../controllers/users.controller')).scoped(),
|
||||
friendsController: asClass(require('../controllers/friends.controller')).scoped(),
|
||||
initialDataController: asClass(
|
||||
require('../controllers/initialData.controller')
|
||||
).scoped(),
|
||||
});
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
module.exports = setupContainer;
|
||||
Reference in New Issue
Block a user