const moment = require('moment') const formatString = require('../helpers/strings').formatString class Queries { constructor () { this.filter = null this.value = null this.period = null } /** * Fonction permettant de générer la query sur artist et title * @param {Array} line * @param {Integer} start * @param {Boolean} artistAndTitle */ setBaseFilter (line, start, artistAndTitle) { let value = '' for (let i = start; i < line.length; i += 1) { value += ' ' + line[i] } this.value = value.replace(' ', '') value = formatString(this.value) if (artistAndTitle) { this.filter = { $or: [ { artist: value }, { title: value } ] } } else { this.filter = { artist: value } } this.value = value } /** * Fonction permettant de générer le filtre de date sur les commandes !stats et !when * @param {String} period */ setPeriod (period) { switch (period) { case 'day': this.period = { $gte: moment().startOf('day'), $lte: moment().endOf('day') } break case 'week': this.period = { $gte: moment().startOf('week'), $lte: moment().endOf('day') } break case 'month': this.period = { $gte: moment().startOf('month'), $lte: moment().endOf('day') } break case 'year': this.period = { $gte: moment().startOf('year'), $lte: moment().endOf('day') } break case 'lastday': this.period = { $gte: moment().subtract('day').startOf('day'), $lte: moment().subtract('day').endOf('day') } break case 'lastweek': this.period = { $gte: moment().subtract(1, 'week').startOf('week'), $lte: moment().subtract(1, 'week').endOf('week') } break case 'lastmonth': this.period = { $gte: moment().subtract(1, 'month').startOf('month'), $lte: moment().subtract(1, 'month').endOf('month') } break case 'lastyear': this.period = { $gte: moment().subtract(1, 'year').startOf('year'), $lte: moment().subtract(1, 'year').endOf('year') } break default: this.period = {} } } /** * Getter pour le filter * @return {Object} */ getFilter () { return this.filter } /** * Getter pour le texte filtré * @return {String} */ getValue () { return this.value } /** * Getter pour la période * @return {String} */ getPeriod () { return this.period } } module.exports = Queries