/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */

import { camelize, capitalize } from '@ember/string';
import { RestSerializer } from 'ember-cli-mirage';

const keyCase = (str) =>
  str === 'id' ? 'ID' : capitalize(camelize(str)).replace(/Id/g, 'ID');

export default RestSerializer.extend({
  serialize() {
    const json = RestSerializer.prototype.serialize.apply(this, arguments);
    const keys = Object.keys(json);
    if (keys.length === 1) {
      return json[keys[0]];
    } else {
      return json;
    }
  },

  keyForModel: keyCase,
  keyForForeignKey: (str) => `${keyCase(str)}ID`,
  keyForCollection: keyCase,
  keyForAttribute: keyCase,
  keyForRelationship: keyCase,
  keyForRelationshipIds: keyCase,
  keyForEmbeddedRelationship: keyCase,
});
