consul/ui/packages/consul-ui/app/services/repository/nspace.js

56 lines
1.7 KiB
JavaScript

import RepositoryService from 'consul-ui/services/repository';
import { PRIMARY_KEY, SLUG_KEY } from 'consul-ui/models/nspace';
import dataSource from 'consul-ui/decorators/data-source';
const modelName = 'nspace';
export default class NspaceService extends RepositoryService {
getPrimaryKey() {
return PRIMARY_KEY;
}
getSlugKey() {
return SLUG_KEY;
}
getModelName() {
return modelName;
}
remove(item) {
// Namespace deletion is more of a soft delete.
// Therefore the namespace still exists once we've requested a delete/removal.
// This makes 'removing' more of a custom action rather than a standard
// ember-data delete.
// Here we use the same request for a delete but we bypass ember-data's
// destroyRecord/unloadRecord and serialization so we don't get
// ember data error messages when the UI tries to update a 'DeletedAt' property
// on an object that ember-data is trying to delete
const res = this.store.adapterFor('nspace').rpc(
(adapter, request, serialized, unserialized) => {
return adapter.requestForDeleteRecord(request, serialized, unserialized);
},
(serializer, respond, serialized, unserialized) => {
return item;
},
item,
'nspace'
);
return res;
}
@dataSource('/:ns/:dc/namespace/:id')
async findBySlug() {
return super.findBySlug(...arguments);
}
@dataSource('/:ns/:dc/namespaces')
findAll(params, configuration = {}) {
const query = {};
if (typeof configuration.cursor !== 'undefined') {
query.index = configuration.cursor;
query.uri = configuration.uri;
}
return this.store.query(this.getModelName(), query);
}
}