| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 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,
- }))
- }
|