/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: BUSL-1.1 */ import Model, { attr } from '@ember-data/model'; import { computed } from '@ember/object'; import isFolder from 'consul-ui/utils/isFolder'; import { nullValue } from 'consul-ui/decorators/replace'; export const PRIMARY_KEY = 'uid'; // not really a slug as it contains slashes but all intents and purposes its // my 'slug' export const SLUG_KEY = 'Key'; export default class Kv extends Model { @attr('string') uid; @attr('string') Key; @attr('number') SyncTime; @attr() meta; // {} @attr('string') Datacenter; @attr('string') Namespace; @attr('string') Partition; @attr('number') LockIndex; @attr('number') Flags; @nullValue(undefined) @attr('string') Value; @attr('number') CreateIndex; @attr('number') ModifyIndex; @attr('string') Session; @attr({ defaultValue: () => [] }) Resources; // [] @computed('isFolder') get Kind() { return this.isFolder ? 'folder' : 'key'; } @computed('Key') get isFolder() { return isFolder(this.Key || ''); } }