import GeneratedHostSetModel from '../generated/models/host-set'; import { fragmentArray } from 'ember-data-model-fragments/attributes'; export default class HostSetModel extends GeneratedHostSetModel { // =attributes /** * Host IDs are read-only under normal circumstances. But these can * be persisted via a dedicated call to `addHosts()`. */ @fragmentArray('fragment-string', { readOnly: true, emptyArrayIfMissing: true, }) host_ids; // =methods /** * Adds hosts via the `add-hosts` method. * See serializer and adapter for more information. * @param {[string]} hostIDs * @param {object} options * @param {object} options.adapterOptions * @return {Promise} */ addHosts(hostIDs, options = { adapterOptions: {} }) { const defaultAdapterOptions = { method: 'add-hosts', hostIDs, }; return this.save({ ...options, adapterOptions: { ...defaultAdapterOptions, ...options.adapterOptions, }, }); } /** * Add a single host via the `add-hosts` method. * @param {string} hostID * @param {object} options * @return {Promise} */ addHost(hostID, options) { return this.addHosts([hostID], options); } /** * Delete hosts via the `remove-hosts` method. * See serializer and adapter for more information. * @param {[string]} hostIDs * @param {object} options * @param {object} options.adapterOptions * @return {Promise} */ removeHosts(hostIDs, options = { adapterOptions: {} }) { const defaultAdapterOptions = { method: 'remove-hosts', hostIDs, }; return this.save({ ...options, adapterOptions: { ...defaultAdapterOptions, ...options.adapterOptions, }, }); } /** * Delete a single host via the `remove-hosts` method. * @param {string} hostID * @param {object} options * @return {Promise} */ removeHost(hostID, options) { return this.removeHosts([hostID], options); } }