mirror of https://github.com/hashicorp/consul
34 lines
975 B
JavaScript
34 lines
975 B
JavaScript
|
import Service, { inject as service } from '@ember/service';
|
||
|
import { setProperties } from '@ember/object';
|
||
|
|
||
|
export default Service.extend({
|
||
|
settings: service('settings'),
|
||
|
intention: service('repository/intention'),
|
||
|
prepare: function(sink, data, instance) {
|
||
|
const [, dc, nspace, model, slug] = sink.split('/');
|
||
|
const repo = this[model];
|
||
|
if (slug === '') {
|
||
|
instance = repo.create({
|
||
|
Datacenter: dc,
|
||
|
Namespace: nspace,
|
||
|
});
|
||
|
} else {
|
||
|
if (typeof instance === 'undefined') {
|
||
|
instance = repo.peek(slug);
|
||
|
}
|
||
|
}
|
||
|
setProperties(instance, data);
|
||
|
return instance;
|
||
|
},
|
||
|
persist: function(sink, instance) {
|
||
|
const [, , , /*dc*/ /*nspace*/ model] = sink.split('/');
|
||
|
const repo = this[model];
|
||
|
return repo.persist(instance);
|
||
|
},
|
||
|
remove: function(sink, instance) {
|
||
|
const [, , , /*dc*/ /*nspace*/ model] = sink.split('/');
|
||
|
const repo = this[model];
|
||
|
return repo.remove(instance);
|
||
|
},
|
||
|
});
|