| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import RESTSerializer, { EmbeddedRecordsMixin } from '@ember-data/serializer/rest'; |
| import { assign } from '@ember/polyfills'; |
| import { decamelize } from '@ember/string'; |
| |
| export default RESTSerializer.extend(EmbeddedRecordsMixin, { |
| keyForAttribute: function (attr) { |
| return decamelize(attr); |
| }, |
| |
| pushPayload(store, payload) { |
| const transformedPayload = this.normalizeResponse( |
| store, |
| store.modelFor('node'), |
| payload, |
| null, |
| 'findAll' |
| ); |
| return store.push(transformedPayload); |
| }, |
| |
| nodeFromObject(name, payload) { |
| const nodeObj = payload.nodes[name]; |
| return assign(nodeObj, { |
| name, |
| id: name, |
| }); |
| }, |
| |
| normalizeResponse(store, primaryModelClass, payload, id, requestType) { |
| const nodes = payload.nodes |
| ? Object.keys(payload.nodes).map((name) => this.nodeFromObject(name, payload)) |
| : [assign(payload, { id: '1' })]; |
| |
| const transformedPayload = { nodes: nodes }; |
| |
| return this._super(store, primaryModelClass, transformedPayload, id, requestType); |
| }, |
| |
| normalize(model, hash, prop) { |
| hash.id = '1'; |
| return this._super(model, hash, prop); |
| }, |
| }); |