Modifiche
This commit is contained in:
+24
-25
@@ -1,31 +1,30 @@
|
||||
const express = require('express');
|
||||
|
||||
// Il router è ora una factory function che riceve l'istanza di sequelize
|
||||
module.exports = (sequelize) => {
|
||||
const router = express.Router();
|
||||
|
||||
// --- Middleware per simulare un utente loggato ---
|
||||
const { User } = sequelize.models;
|
||||
const MOCK_USER_NAME = 'Mario Rossi';
|
||||
let MOCK_USER_ID = null;
|
||||
module.exports = sequelize => {
|
||||
const router = express.Router();
|
||||
|
||||
router.use(async (req, res, next) => {
|
||||
if (!MOCK_USER_ID) {
|
||||
const user = await User.findOne({ where: { name: MOCK_USER_NAME } });
|
||||
if (user) {
|
||||
MOCK_USER_ID = user.id;
|
||||
}
|
||||
}
|
||||
req.userId = MOCK_USER_ID;
|
||||
next();
|
||||
});
|
||||
// --- Middleware per simulare un utente loggato ---
|
||||
const { User } = sequelize.models;
|
||||
const MOCK_USER_NAME = 'Mario Rossi';
|
||||
let MOCK_USER_ID = null;
|
||||
|
||||
// --- Monta i router da file separati ---
|
||||
router.use(require('./initial-data.routes')(sequelize));
|
||||
router.use('/bets', require('./bets.routes')(sequelize));
|
||||
router.use('/groups', require('./groups.routes')(sequelize));
|
||||
router.use('/friend-requests', require('./friends.routes')(sequelize));
|
||||
router.use('/users', require('./users.routes')(sequelize));
|
||||
|
||||
return router;
|
||||
router.use(async (req, res, next) => {
|
||||
if (!MOCK_USER_ID) {
|
||||
const user = await User.findOne({ where: { name: MOCK_USER_NAME } });
|
||||
if (user) {
|
||||
MOCK_USER_ID = user.id;
|
||||
}
|
||||
}
|
||||
req.userId = MOCK_USER_ID;
|
||||
next();
|
||||
});
|
||||
|
||||
// --- Monta i router da file separati ---
|
||||
router.use('/bets', require('./bets.routes')(sequelize));
|
||||
router.use('/groups', require('./groups.routes')(sequelize));
|
||||
router.use('/friend-requests', require('./friends.routes')(sequelize));
|
||||
router.use('/users', require('./users.routes')(sequelize));
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const { Op } = require('sequelize');
|
||||
|
||||
// Modello Mongoose per le Scommesse
|
||||
const Bet = require('../models/bet.model');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const { User, Friendship, FriendRequest } = sequelize.models;
|
||||
const { populateBetsWithUsers } = require('../utils/populateBets')(sequelize);
|
||||
|
||||
// GET /api/initial-data
|
||||
router.get('/initial-data', async (req, res) => {
|
||||
try {
|
||||
// --- Query PostgreSQL ---
|
||||
const currentUser = await User.findByPk(req.userId);
|
||||
const users = await User.findAll();
|
||||
|
||||
const friendships = await Friendship.findAll({
|
||||
where: { [Op.or]: [{ user1Id: req.userId }, { user2Id: req.userId }] },
|
||||
include: [{ model: User, as: 'user1' }, { model: User, as: 'user2' }]
|
||||
});
|
||||
const friends = friendships.map(f => (f.user1Id === req.userId ? f.user2 : f.user1));
|
||||
|
||||
const receivedFriendRequests = await FriendRequest.findAll({
|
||||
where: { toUserId: req.userId, status: 'PENDING' },
|
||||
include: [{ model: User, as: 'fromUser' }, { model: User, as: 'toUser' }]
|
||||
});
|
||||
|
||||
const sentFriendRequests = await FriendRequest.findAll({
|
||||
where: { fromUserId: req.userId, status: 'PENDING' },
|
||||
include: [{ model: User, as: 'fromUser' }, { model: User, as: 'toUser' }]
|
||||
});
|
||||
|
||||
const userGroups = await currentUser.getGroups({
|
||||
include: [{ model: User, as: 'members', through: { attributes: [] } }]
|
||||
});
|
||||
|
||||
// --- Query MongoDB ---
|
||||
const mongoBets = await Bet.find({ 'participants.user': req.userId }).sort({ startDate: -1 });
|
||||
const mongoPublicBets = await Bet.find({ isPublic: true, 'participants.user': { $ne: req.userId } });
|
||||
|
||||
// --- Data Stitching ---
|
||||
const bets = await populateBetsWithUsers(mongoBets);
|
||||
const publicBets = await populateBetsWithUsers(mongoPublicBets);
|
||||
|
||||
res.json({
|
||||
currentUser, users, friends, receivedFriendRequests, sentFriendRequests,
|
||||
bets, publicBets, groups: userGroups
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error fetching initial data:', error);
|
||||
res.status(500).json({ message: 'Error fetching initial data', error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
@@ -1,14 +1,13 @@
|
||||
const express = require('express');
|
||||
const { validate } = require('../../middleware/validation');
|
||||
const {
|
||||
createBetSchema,
|
||||
updateBetSchema,
|
||||
} = require('../../shared/validators/schemas/bet.schema');
|
||||
const { createBetSchema, updateBetSchema } = require('../../shared/validators/schemas/bet.schema');
|
||||
|
||||
module.exports = ({ betsController }) => {
|
||||
const router = express.Router();
|
||||
|
||||
const controller = {
|
||||
getUserBets: (req, res, next) => betsController.getUserBets(req, res, next),
|
||||
getPublicBets: (req, res, next) => betsController.getPublicBets(req, res, next),
|
||||
getAllBets: (req, res, next) => betsController.getAllBets(req, res, next),
|
||||
getBetById: (req, res, next) => betsController.getBetById(req, res, next),
|
||||
createBet: (req, res, next) => betsController.createBet(req, res, next),
|
||||
@@ -16,6 +15,8 @@ module.exports = ({ betsController }) => {
|
||||
deleteBet: (req, res, next) => betsController.deleteBet(req, res, next),
|
||||
};
|
||||
|
||||
router.get('/user', controller.getUserBets);
|
||||
router.get('/public', controller.getPublicBets);
|
||||
router.get('/', controller.getAllBets);
|
||||
router.get('/:id', controller.getBetById);
|
||||
router.post('/', validate(createBetSchema), controller.createBet);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const express = require('express');
|
||||
|
||||
module.exports = (container) => {
|
||||
module.exports = container => {
|
||||
const router = express.Router();
|
||||
|
||||
const controllers = {
|
||||
@@ -8,14 +8,12 @@ module.exports = (container) => {
|
||||
betsController: container.resolve('betsController'),
|
||||
usersController: container.resolve('usersController'),
|
||||
friendsController: container.resolve('friendsController'),
|
||||
initialDataController: container.resolve('initialDataController'),
|
||||
};
|
||||
|
||||
router.use('/groups', require('./groups.routes')(controllers));
|
||||
router.use('/bets', require('./bets.routes')(controllers));
|
||||
router.use('/users', require('./users.routes')(controllers));
|
||||
router.use('/friend-requests', require('./friends.routes')(controllers));
|
||||
router.use('/initial-data', require('./initialData.routes')(controllers));
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
const express = require('express');
|
||||
|
||||
module.exports = ({ initialDataController }) => {
|
||||
const router = express.Router();
|
||||
|
||||
const controller = {
|
||||
getInitialData: (req, res, next) => initialDataController.getInitialData(req, res, next),
|
||||
};
|
||||
|
||||
router.get('/', controller.getInitialData);
|
||||
|
||||
return router;
|
||||
};
|
||||
@@ -6,9 +6,11 @@ module.exports = ({ usersController }) => {
|
||||
const router = express.Router();
|
||||
|
||||
const controller = {
|
||||
getCurrentUser: (req, res, next) => usersController.getCurrentUser(req, res, next),
|
||||
updateCurrentUser: (req, res, next) => usersController.updateCurrentUser(req, res, next),
|
||||
};
|
||||
|
||||
router.get('/current', controller.getCurrentUser);
|
||||
router.put('/current', validate(updateUserSchema), controller.updateCurrentUser);
|
||||
|
||||
return router;
|
||||
|
||||
Reference in New Issue
Block a user