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 });