Initial commit

This commit is contained in:
Lorenzo Sanesi
2026-03-26 22:46:03 +01:00
commit 18e0e04700
80 changed files with 13114 additions and 0 deletions
+81
View File
@@ -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;