all files / addon/serializers/ rest.js

80% Statements 12/15
50% Branches 2/4
100% Functions 1/1
80% Lines 12/15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42                                                           
// Please Remove this serializer when feature flag 'ds-pushpayload-return' will be enabled by default
// https://github.com/emberjs/data/pull/4110
 
import { makeArray } from '@ember/array';
 
import { warn } from '@ember/debug';
import DS from 'ember-data';
 
const { RESTSerializer } = DS;
 
export default RESTSerializer.extend({
  pushPayload(store, payload) {
    let documentHash = {
      data: [],
      included: []
    };
 
    for (let prop in payload) {
      let modelName = this.modelNameFromPayloadKey(prop);
      Iif (!store.modelFactoryFor(modelName)) {
        warn(this.warnMessageNoModelForKey(prop, modelName), false, {
          id: 'ds.serializer.model-for-key-missing'
        });
        continue;
      }
      let type = store.modelFor(modelName);
      let typeSerializer = store.serializerFor(type.modelName);
 
      makeArray(payload[prop]).forEach((hash) => {
        let { data, included } = typeSerializer.normalize(type, hash, prop);
        documentHash.data.push(data);
        Iif (included) {
          documentHash.included.push(...included);
        }
      });
    }
 
    return store.push(documentHash);
  }
});