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
@@ -0,0 +1,54 @@
const ResponseHandler = require('../shared/response.handler');
class BetsController {
constructor({ betsService }) {
this.betsService = betsService;
}
async getAllBets(req, res, next) {
try {
const bets = await this.betsService.getAllBets();
return ResponseHandler.success(res, bets, 'Bets retrieved successfully');
} catch (error) {
next(error);
}
}
async getBetById(req, res, next) {
try {
const bet = await this.betsService.getBetById(req.params.id);
return ResponseHandler.success(res, bet, 'Bet retrieved successfully');
} catch (error) {
next(error);
}
}
async createBet(req, res, next) {
try {
const bet = await this.betsService.createBet(req.body);
return ResponseHandler.created(res, bet, 'Bet created successfully');
} catch (error) {
next(error);
}
}
async updateBet(req, res, next) {
try {
const bet = await this.betsService.updateBet(req.params.id, req.body);
return ResponseHandler.success(res, bet, 'Bet updated successfully');
} catch (error) {
next(error);
}
}
async deleteBet(req, res, next) {
try {
await this.betsService.deleteBet(req.params.id);
return ResponseHandler.success(res, null, 'Bet deleted successfully');
} catch (error) {
next(error);
}
}
}
module.exports = BetsController;
@@ -0,0 +1,67 @@
const ResponseHandler = require('../shared/response.handler');
class FriendsController {
constructor({ friendsService }) {
this.friendsService = friendsService;
}
async getFriends(req, res, next) {
try {
const friends = await this.friendsService.getFriendsByUserId(req.userId);
return ResponseHandler.success(res, friends, 'Friends retrieved successfully');
} catch (error) {
next(error);
}
}
async getPendingRequests(req, res, next) {
try {
const requests = await this.friendsService.getPendingRequests(req.userId);
return ResponseHandler.success(
res,
requests,
'Pending requests retrieved successfully'
);
} catch (error) {
next(error);
}
}
async sendRequest(req, res, next) {
try {
const request = await this.friendsService.sendFriendRequest(
req.userId,
req.body.identifier
);
return ResponseHandler.created(res, request, 'Friend request sent successfully');
} catch (error) {
next(error);
}
}
async acceptRequest(req, res, next) {
try {
const result = await this.friendsService.acceptFriendRequest(
req.params.id,
req.userId
);
return ResponseHandler.success(res, result, result.message);
} catch (error) {
next(error);
}
}
async rejectRequest(req, res, next) {
try {
const result = await this.friendsService.rejectFriendRequest(
req.params.id,
req.userId
);
return ResponseHandler.success(res, result, result.message);
} catch (error) {
next(error);
}
}
}
module.exports = FriendsController;
@@ -0,0 +1,78 @@
const ResponseHandler = require('../shared/response.handler');
class GroupsController {
constructor({ groupsService }) {
this.groupsService = groupsService;
}
async getAllGroups(req, res, next) {
try {
const groups = await this.groupsService.getAllGroups();
return ResponseHandler.success(res, groups, 'Groups retrieved successfully');
} catch (error) {
next(error);
}
}
async getGroupById(req, res, next) {
try {
const group = await this.groupsService.getGroupById(req.params.id);
return ResponseHandler.success(res, group, 'Group retrieved successfully');
} catch (error) {
next(error);
}
}
async createGroup(req, res, next) {
try {
const group = await this.groupsService.createGroup(req.body);
return ResponseHandler.created(res, group, 'Group created successfully');
} catch (error) {
next(error);
}
}
async updateGroup(req, res, next) {
try {
const group = await this.groupsService.updateGroup(req.params.id, req.body);
return ResponseHandler.success(res, group, 'Group updated successfully');
} catch (error) {
next(error);
}
}
async deleteGroup(req, res, next) {
try {
await this.groupsService.deleteGroup(req.params.id);
return ResponseHandler.success(res, null, 'Group deleted successfully');
} catch (error) {
next(error);
}
}
async addMembers(req, res, next) {
try {
const group = await this.groupsService.addMembersToGroup(
req.params.id,
req.body.userIds
);
return ResponseHandler.success(res, group, 'Members added successfully');
} catch (error) {
next(error);
}
}
async removeMember(req, res, next) {
try {
const group = await this.groupsService.removeMemberFromGroup(
req.params.id,
req.params.userId
);
return ResponseHandler.success(res, group, 'Member removed successfully');
} catch (error) {
next(error);
}
}
}
module.exports = GroupsController;
@@ -0,0 +1,38 @@
const ResponseHandler = require('../shared/response.handler');
class InitialDataController {
constructor({ usersService, friendsService, groupsService, betsService }) {
this.usersService = usersService;
this.friendsService = friendsService;
this.groupsService = groupsService;
this.betsService = betsService;
}
async getInitialData(req, res, next) {
try {
const currentUser = await this.usersService.getUserById(req.userId);
const users = await this.usersService.getAllUsers();
const friends = await this.friendsService.getFriendsByUserId(req.userId);
const friendRequests = await this.friendsService.getPendingRequests(req.userId);
const groups = await this.groupsService.getAllGroups();
const userBets = await this.betsService.getUserBets(req.userId);
const publicBets = await this.betsService.getPublicBetsExcludingUser(req.userId);
const data = {
currentUser,
users,
friends,
friendRequests,
groups,
userBets,
publicBets,
};
return ResponseHandler.success(res, data, 'Initial data retrieved successfully');
} catch (error) {
next(error);
}
}
}
module.exports = InitialDataController;
@@ -0,0 +1,18 @@
const ResponseHandler = require('../shared/response.handler');
class UsersController {
constructor({ usersService }) {
this.usersService = usersService;
}
async updateCurrentUser(req, res, next) {
try {
const user = await this.usersService.updateUserProfile(req.userId, req.body);
return ResponseHandler.success(res, user, 'User profile updated successfully');
} catch (error) {
next(error);
}
}
}
module.exports = UsersController;