github.com/blixtra/nomad@v0.7.2-0.20171221000451-da9a1d7bb050/ui/app/serializers/application.js (about)

     1  import Ember from 'ember';
     2  import JSONSerializer from 'ember-data/serializers/json';
     3  
     4  const { makeArray } = Ember;
     5  
     6  export default JSONSerializer.extend({
     7    primaryKey: 'ID',
     8  
     9    keyForAttribute(attr) {
    10      return attr.camelize().capitalize();
    11    },
    12  
    13    keyForRelationship(attr, relationshipType) {
    14      const key = `${attr
    15        .singularize()
    16        .camelize()
    17        .capitalize()}ID`;
    18      return relationshipType === 'hasMany' ? key.pluralize() : key;
    19    },
    20  
    21    // Modeled after the pushPayload for ember-data/serializers/rest
    22    pushPayload(store, payload) {
    23      const documentHash = {
    24        data: [],
    25        included: [],
    26      };
    27  
    28      Object.keys(payload).forEach(key => {
    29        const modelName = this.modelNameFromPayloadKey(key);
    30        const serializer = store.serializerFor(modelName);
    31        const type = store.modelFor(modelName);
    32  
    33        makeArray(payload[key]).forEach(hash => {
    34          const { data, included } = serializer.normalize(type, hash, key);
    35          documentHash.data.push(data);
    36          if (included) {
    37            documentHash.included.push(...included);
    38          }
    39        });
    40  
    41        store.push(documentHash);
    42      });
    43    },
    44  
    45    modelNameFromPayloadKey(key) {
    46      return key.dasherize().singularize();
    47    },
    48  });