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); } } });
function replaceRecordAttribute( record: RecordIdentity, attribute: string, value: any ) { deepSet(record, ['attributes', attribute], value); }
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); } });
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); }
.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); });
['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); } });
function replaceRecordHasOne( record: RecordIdentity, relationship: string, relatedRecord: RecordIdentity ) { deepSet( record, ['relationships', relationship, 'data'], relatedRecord ? cloneRecordIdentity(relatedRecord) : null ); }
function updateRecordReplaceHasMany( record: Record, relationship: string, relatedRecords: RecordIdentity[] ) { deepSet( record, ['relationships', relationship, 'data'], relatedRecords.map(cloneRecordIdentity) ); }
function replaceRecordHasMany( record: RecordIdentity, relationship: string, relatedRecords: RecordIdentity[] ) { deepSet( record, ['relationships', relationship, 'data'], relatedRecords.map(r => cloneRecordIdentity(r)) ); }