70 lines
2.5 KiB
JavaScript
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;
|