/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */

import Model from '@ember-data/model';
import { attr, belongsTo } from '@ember-data/model';
import { get } from '@ember/object';

export default class Recommendation extends Model {
  @belongsTo('job') job;
  @belongsTo('recommendation-summary', { inverse: 'recommendations' })
  recommendationSummary;

  @attr('date') submitTime;

  get taskGroup() {
    return get(this, 'recommendationSummary.taskGroup');
  }

  @attr('string') taskName;

  get task() {
    return get(this, 'taskGroup.tasks').findBy('name', this.taskName);
  }

  @attr('string') resource;
  @attr('number') value;

  get currentValue() {
    const resourceProperty =
      this.resource === 'CPU' ? 'reservedCPU' : 'reservedMemory';
    return get(this, `task.${resourceProperty}`);
  }

  @attr() stats;
}
