Files
Transcendence/srcs/backend/routes/friends.js
T

70 lines
2.5 KiB
JavaScript

import express from 'express';
import friendsService from '../services/friends.js';
import authenticateToken from '../middleware/auth.js';
const router = express.Router();
// Get friends list
router.get('/', authenticateToken, async (req, res) => {
const result = await friendsService.getFriends(req.user.userId);
res.status(result.status).json(result.data);
});
// Get pending friend requests
router.get('/requests', authenticateToken, async (req, res) => {
const result = await friendsService.getPendingRequests(req.user.userId);
res.status(result.status).json(result.data);
});
// Search users
router.get('/search', authenticateToken, async (req, res) => {
const { q } = req.query;
if (!q || q.trim().length === 0) {
return res.status(400).json({ error: 'Search query required' });
}
const result = await friendsService.searchUsers(req.user.userId, q.trim());
res.status(result.status).json(result.data);
});
// Send friend request
router.post('/request/:userId', authenticateToken, async (req, res) => {
const toUserId = parseInt(req.params.userId);
if (isNaN(toUserId)) {
return res.status(400).json({ error: 'Invalid user ID' });
}
const result = await friendsService.sendFriendRequest(req.user.userId, toUserId);
res.status(result.status).json(result.data);
});
// Accept friend request
router.post('/accept/:userId', authenticateToken, async (req, res) => {
const fromUserId = parseInt(req.params.userId);
if (isNaN(fromUserId)) {
return res.status(400).json({ error: 'Invalid user ID' });
}
const result = await friendsService.acceptFriendRequest(req.user.userId, fromUserId);
res.status(result.status).json(result.data);
});
// Decline friend request
router.post('/decline/:userId', authenticateToken, async (req, res) => {
const fromUserId = parseInt(req.params.userId);
if (isNaN(fromUserId)) {
return res.status(400).json({ error: 'Invalid user ID' });
}
const result = await friendsService.declineFriendRequest(req.user.userId, fromUserId);
res.status(result.status).json(result.data);
});
// Remove friend
router.delete('/:userId', authenticateToken, async (req, res) => {
const friendId = parseInt(req.params.userId);
if (isNaN(friendId)) {
return res.status(400).json({ error: 'Invalid user ID' });
}
const result = await friendsService.removeFriend(req.user.userId, friendId);
res.status(result.status).json(result.data);
});
export default router;