vault/ui/app/adapters/database/connection.js
Hamid Ghaf e55c18ed12
adding copyright header (#19555)
* adding copyright header

* fix fmt and a test
2023-03-15 09:00:52 -07:00

83 lines
2.0 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import ApplicationAdapter from '../application';
export default ApplicationAdapter.extend({
namespace: 'v1',
urlFor(backend, id, type = '') {
if (type === 'ROTATE') {
return `${this.buildURL()}/${backend}/rotate-root/${id}`;
} else if (type === 'RESET') {
return `${this.buildURL()}/${backend}/reset/${id}`;
}
let url = `${this.buildURL()}/${backend}/config`;
if (id) {
url = `${this.buildURL()}/${backend}/config/${id}`;
}
return url;
},
optionsForQuery(id) {
const data = {};
if (!id) {
data['list'] = true;
}
return { data };
},
fetchByQuery(store, query) {
const { backend, id } = query;
return this.ajax(this.urlFor(backend, id), 'GET', this.optionsForQuery(id)).then((resp) => {
resp.backend = backend;
if (id) {
resp.id = id;
}
return resp;
});
},
query(store, type, query) {
return this.fetchByQuery(store, query);
},
queryRecord(store, type, query) {
return this.fetchByQuery(store, query);
},
createRecord(store, type, snapshot) {
const serializer = store.serializerFor(type.modelName);
const data = serializer.serialize(snapshot);
const id = snapshot.attr('name');
const backend = snapshot.attr('backend');
return this.ajax(this.urlFor(backend, id), 'POST', { data }).then(() => {
// ember data doesn't like 204s if it's not a DELETE
return {
data: {
id,
...data,
},
};
});
},
updateRecord() {
return this.createRecord(...arguments);
},
deleteRecord(store, type, snapshot) {
const id = snapshot.id;
const backend = snapshot.attr('backend');
return this.ajax(this.urlFor(backend, id), 'DELETE');
},
rotateRootCredentials(backend, id) {
return this.ajax(this.urlFor(backend, id, 'ROTATE'), 'POST');
},
resetConnection(backend, id) {
return this.ajax(this.urlFor(backend, id, 'RESET'), 'POST');
},
});