const { Router } = require('express') const { getAnswer } = require('../../utils/common') const { CigaretteModel } = require('./model/cigarette') const { authMiddleware } = require('./middleware/auth') const router = Router() // Все эндпоинты статистики требуют авторизации router.use(authMiddleware) // Агрегация по дням: количество сигарет в день для построения графика router.get('/daily', async (req, res, next) => { try { const user = req.user const { from, to } = req.query const now = new Date() const defaultFrom = new Date(now) defaultFrom.setDate(defaultFrom.getDate() - 30) const fromDate = from ? new Date(from) : defaultFrom const toDate = to ? new Date(to) : now const match = { userId: user.id, smokedAt: { $gte: fromDate, $lte: toDate, }, } const data = await CigaretteModel.aggregate([ { $match: match }, { $group: { _id: { $dateToString: { format: '%Y-%m-%d', date: '$smokedAt' }, }, count: { $sum: 1 }, }, }, { $sort: { _id: 1 } }, ]) const result = data.map((item) => ({ date: item._id, count: item.count, })) res.json(getAnswer(null, result)) } catch (err) { next(err) } }) module.exports = router