import moment from 'moment';

const intervalMap = {
  "Hourly":  { startOf: 'hour',     amount: 'hours'},
  "Daily":   { startOf: 'day',      amount: 'days'},
  "Weekly":  { startOf: 'isoWeek',  amount: 'weeks'},
  "Monthly": { startOf: 'month',    amount: 'months'},
  "Yearly":  { startOf: 'year',     amount: 'years'},
};

export class IndexPattern {

  constructor(private pattern, private interval: string | null) { }

  getIndexForToday() {
    if (this.interval) {
      return moment.utc().format(this.pattern);
    } else {
      return this.pattern;
    }
  }

  getIndexList(from, to) {
    if (!this.interval) {
      return this.pattern;
    }

    var intervalInfo = intervalMap[this.interval];
    var start = moment(from).utc().startOf(intervalInfo.startOf);
    var endEpoch = moment(to).utc().startOf(intervalInfo.startOf).valueOf();
    var indexList = [];

    while (start.valueOf() <= endEpoch) {
      indexList.push(start.format(this.pattern));
      start.add(1, intervalInfo.amount);
    }

    return indexList;
  }
}

