/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: BUSL-1.1
 */

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

export const MANAGEMENT_ID = '00000000-0000-0000-0000-000000000001';
export const PRIMARY_KEY = 'uid';
export const SLUG_KEY = 'ID';

export default class Policy extends Model {
  @attr('string') uid;
  @attr('string') ID;

  @attr('string') Datacenter;
  @attr('string') Namespace;
  @attr('string') Partition;
  @attr('string', { defaultValue: () => '' }) Name;
  @attr('string', { defaultValue: () => '' }) Description;
  @attr('string', { defaultValue: () => '' }) Rules;
  @attr('number') SyncTime;
  @attr('number') CreateIndex;
  @attr('number') ModifyIndex;
  @attr() Datacenters; // string[]
  @attr() meta; // {}
  // frontend only for templated policies (Identities)
  @attr('string', { defaultValue: () => '' }) template;
  // frontend only for ordering where CreateIndex can't be used
  @attr('number', { defaultValue: () => new Date().getTime() }) CreateTime;

  @computed('ID')
  get isGlobalManagement() {
    return this.ID === MANAGEMENT_ID;
  }
}
