Example #1
0
 Object.keys(keys).forEach(keyName => {
   let keyValue = keys[keyName];
   if (keyValue) {
     deepSet(this._idsToKeys, [type, keyName, id], keyValue);
     deepSet(this._keysToIds, [type, keyName, keyValue], id);
   }
 });
        Object.keys(replacement.relationships).forEach(field => {
          let data = deepGet(replacement, ['relationships', field, 'data']);
          if (data !== undefined) {
            let currentData = deepGet(current, [
              'relationships',
              field,
              'data'
            ]);
            let relationshipChanged;

            if (isArray(data)) {
              if (currentData) {
                relationshipChanged = !equalRecordIdentitySets(
                  currentData,
                  data
                );
              } else {
                relationshipChanged = true;
                currentData = [];
              }
            } else {
              if (currentData) {
                relationshipChanged = !equalRecordIdentities(currentData, data);
              } else {
                relationshipChanged = true;
                currentData = null;
              }
            }

            if (relationshipChanged) {
              changed = true;
              deepSet(result, ['relationships', field, 'data'], currentData);
            }
          }
        });
Example #3
0
function replaceRecordAttribute(
  record: RecordIdentity,
  attribute: string,
  value: any
) {
  deepSet(record, ['attributes', attribute], value);
}
Example #4
0
 Object.keys(replacement[grouping]).forEach(field => {
   let value = replacement[grouping][field];
   let currentValue = deepGet(current, [grouping, field]);
   if (!eq(value, currentValue)) {
     changed = true;
     deepSet(result, [grouping, field], currentValue === undefined ? null : currentValue);
   }
 });
Example #5
0
function updateRecordAddToHasMany(
  record: Record,
  relationship: string,
  relatedRecord: RecordIdentity
) {
  const data = deepGet(record, ['relationships', relationship, 'data']) || [];
  data.push(cloneRecordIdentity(relatedRecord));
  deepSet(record, ['relationships', relationship, 'data'], data);
}
Example #6
0
 .then(record => {
   let relationships = deepGet(record, ['relationships', operation.relationship, 'data']);
   if (relationships) {
     relationships.push(operation.relatedRecord);
   } else {
     deepSet(record, ['relationships', operation.relationship, 'data'], [operation.relatedRecord]);
   }
   return source.putRecord(record);
 });
Example #7
0
  ['filter', 'include', 'page', 'sort'].forEach(param => {
    let value = (options as any)[param];
    if (value) {
      if (param === 'include' && isArray(value)) {
        value = value.join(',');
      }

      deepSet(settings, ['params', param], value);
    }
  });
Example #8
0
function replaceRecordHasOne(
  record: RecordIdentity,
  relationship: string,
  relatedRecord: RecordIdentity
) {
  deepSet(
    record,
    ['relationships', relationship, 'data'],
    relatedRecord ? cloneRecordIdentity(relatedRecord) : null
  );
}
Example #9
0
function updateRecordReplaceHasMany(
  record: Record,
  relationship: string,
  relatedRecords: RecordIdentity[]
) {
  deepSet(
    record,
    ['relationships', relationship, 'data'],
    relatedRecords.map(cloneRecordIdentity)
  );
}
Example #10
0
function replaceRecordHasMany(
  record: RecordIdentity,
  relationship: string,
  relatedRecords: RecordIdentity[]
) {
  deepSet(
    record,
    ['relationships', relationship, 'data'],
    relatedRecords.map(r => cloneRecordIdentity(r))
  );
}