53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
|
|
const express = require('express');
|
||
|
|
const router = express.Router();
|
||
|
|
const { authenticate } = require('../middleware/auth');
|
||
|
|
const { getUserStatistics, getUserTopPosts } = require('../utils/statistics');
|
||
|
|
|
||
|
|
// Получить статистику своего профиля
|
||
|
|
router.get('/me', authenticate, async (req, res) => {
|
||
|
|
try {
|
||
|
|
const stats = await getUserStatistics(req.user._id);
|
||
|
|
|
||
|
|
if (!stats) {
|
||
|
|
return res.status(404).json({ error: 'Статистика не найдена' });
|
||
|
|
}
|
||
|
|
|
||
|
|
res.json(stats);
|
||
|
|
} catch (error) {
|
||
|
|
console.error('Ошибка получения статистики:', error);
|
||
|
|
res.status(500).json({ error: 'Ошибка сервера' });
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// Получить статистику другого пользователя
|
||
|
|
router.get('/user/:id', authenticate, async (req, res) => {
|
||
|
|
try {
|
||
|
|
const stats = await getUserStatistics(req.params.id);
|
||
|
|
|
||
|
|
if (!stats) {
|
||
|
|
return res.status(404).json({ error: 'Статистика не найдена' });
|
||
|
|
}
|
||
|
|
|
||
|
|
res.json(stats);
|
||
|
|
} catch (error) {
|
||
|
|
console.error('Ошибка получения статистики:', error);
|
||
|
|
res.status(500).json({ error: 'Ошибка сервера' });
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// Получить топ посты
|
||
|
|
router.get('/top-posts/:userId', authenticate, async (req, res) => {
|
||
|
|
try {
|
||
|
|
const { limit = 5 } = req.query;
|
||
|
|
const topPosts = await getUserTopPosts(req.params.userId, parseInt(limit));
|
||
|
|
|
||
|
|
res.json({ topPosts });
|
||
|
|
} catch (error) {
|
||
|
|
console.error('Ошибка получения топ постов:', error);
|
||
|
|
res.status(500).json({ error: 'Ошибка сервера' });
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
module.exports = router;
|
||
|
|
|