const diskModel = require('../model/disk.model') const moment = require('moment') const dataMoment = (date) => { const arrayDate = (date || moment().add(-1, 'day').format('YYYY-MM-DD')).split('-') switch (arrayDate.length) { case 3: return { year: arrayDate[0], month: arrayDate[1], day: arrayDate[2], unitOfTime: 'day' } case 2: return { year: arrayDate[0], month: arrayDate[1], unitOfTime: 'month' } default: return { year: arrayDate[0], unitOfTime: 'year' } } } exports.getData = async (date) => { const { year, month, day, unitOfTime } = dataMoment(date) const kalender = moment() if (day) kalender.set('date', +day) if (month) kalender.set('month', +month - 1) if (year) kalender.set('year', +year) console.log(kalender.startOf(unitOfTime).toISOString(), kalender.endOf(unitOfTime).toISOString()) const data = await diskModel.aggregate([ { $match: { timestamp: { $gte: kalender.startOf(unitOfTime).toDate(), $lt: kalender.endOf(unitOfTime).toDate() }, mounted_on: '/' } }, { $group: { _id: { $dateToString: { format: '%Y-%m-%d', date: '$timestamp' } }, data: { $push: '$$ROOT' } } }, { $unwind: { path: '$data' } } ]).exec() return data.map(({ _id, data }) => ({ date: _id, size: data.size, used: data.used, available: data.available, use_percent: data.use_percent, timestamp: data.timestamp, })) }