| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import Model, { attr } from '@ember-data/model'; |
| import lazyCapabilities, { apiPath } from 'vault/macros/lazy-capabilities'; |
| import { withFormFields } from 'vault/decorators/model-form-fields'; |
| import { withModelValidations } from 'vault/decorators/model-validations'; |
| |
| const validations = { |
| retentionMonths: [ |
| { |
| validator: (model) => parseInt(model.retentionMonths) >= model.minimumRetentionMonths, |
| message: (model) => |
| `Retention period must be greater than or equal to ${model.minimumRetentionMonths}.`, |
| }, |
| ], |
| }; |
| |
| @withModelValidations(validations) |
| @withFormFields(['enabled', 'retentionMonths']) |
| export default class ClientsConfigModel extends Model { |
| @attr('boolean') queriesAvailable; // true only if historical data exists, will be false if there is only current month data |
| |
| @attr('number', { |
| label: 'Retention period', |
| subText: 'The number of months of activity logs to maintain for client tracking.', |
| }) |
| retentionMonths; |
| |
| @attr('number') minimumRetentionMonths; |
| |
| @attr('string') enabled; |
| |
| @attr('boolean') reportingEnabled; |
| |
| @attr('date') billingStartTimestamp; |
| |
| @lazyCapabilities(apiPath`sys/internal/counters/config`) configPath; |
| |
| get canRead() { |
| return this.configPath.get('canRead') !== false; |
| } |
| get canEdit() { |
| return this.configPath.get('canUpdate') !== false; |
| } |
| } |