Update bcryptjs to version 3.0.3 and add smoke-tracker router to the server configuration.

This commit is contained in:
Primakov Alexandr Alexandrovich
2025-11-17 13:25:20 +03:00
parent 4c166a8d33
commit f6f9163c3f
15 changed files with 1230 additions and 5 deletions

View File

@@ -0,0 +1,59 @@
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