@orbit/record-cache
Version:
Orbit base classes used to access and maintain a set of records.
30 lines • 7.42 kB
JavaScript
import { SyncOperationProcessor } from '../sync-operation-processor';
import { recordAdded, relatedRecordAdded, relatedRecordRemoved, relatedRecordReplaced, relatedRecordsReplaced, recordRemoved, recordUpdated } from './utils/schema-consistency-utils';
/**
* An operation processor that ensures that a cache's data is consistent with
* its associated schema. This includes maintenance of inverse and dependent
* relationships.
*/
export class SyncSchemaConsistencyProcessor extends SyncOperationProcessor {
after(operation) {
switch (operation.op) {
case 'addRecord':
return recordAdded(this.accessor.schema, operation.record);
case 'addToRelatedRecords':
return relatedRecordAdded(this.accessor.schema, operation.record, operation.relationship, operation.relatedRecord);
case 'replaceRelatedRecord':
return relatedRecordReplaced(this.accessor.schema, operation.record, operation.relationship, operation.relatedRecord, this.accessor.getRelatedRecordSync(operation.record, operation.relationship));
case 'replaceRelatedRecords':
return relatedRecordsReplaced(this.accessor.schema, operation.record, operation.relationship, operation.relatedRecords, this.accessor.getRelatedRecordsSync(operation.record, operation.relationship));
case 'removeFromRelatedRecords':
return relatedRecordRemoved(this.accessor.schema, operation.record, operation.relationship, operation.relatedRecord, this.accessor.getRecordSync(operation.relatedRecord));
case 'removeRecord':
return recordRemoved(this.accessor.schema, this.accessor.getRecordSync(operation.record));
case 'updateRecord':
return recordUpdated(this.accessor.schema, operation.record, this.accessor.getRecordSync(operation.record));
default:
return [];
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1zY2hlbWEtY29uc2lzdGVuY3ktcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZXJhdGlvbi1wcm9jZXNzb3JzL3N5bmMtc2NoZW1hLWNvbnNpc3RlbmN5LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixhQUFhLEVBQ2IsYUFBYSxFQUNkLE1BQU0sa0NBQWtDLENBQUM7QUFFMUM7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxzQkFBc0I7SUFDeEUsS0FBSyxDQUFDLFNBQTBCO1FBQzlCLFFBQVEsU0FBUyxDQUFDLEVBQUUsRUFBRTtZQUNwQixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTdELEtBQUsscUJBQXFCO2dCQUN4QixPQUFPLGtCQUFrQixDQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDcEIsU0FBUyxDQUFDLE1BQU0sRUFDaEIsU0FBUyxDQUFDLFlBQVksRUFDdEIsU0FBUyxDQUFDLGFBQWEsQ0FDeEIsQ0FBQztZQUVKLEtBQUssc0JBQXNCO2dCQUN6QixPQUFPLHFCQUFxQixDQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDcEIsU0FBUyxDQUFDLE1BQU0sRUFDaEIsU0FBUyxDQUFDLFlBQVksRUFDdEIsU0FBUyxDQUFDLGFBQWEsRUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FDaEMsU0FBUyxDQUFDLE1BQU0sRUFDaEIsU0FBUyxDQUFDLFlBQVksQ0FDdkIsQ0FDRixDQUFDO1lBRUosS0FBSyx1QkFBdUI7Z0JBQzFCLE9BQU8sc0JBQXNCLENBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUNwQixTQUFTLENBQUMsTUFBTSxFQUNoQixTQUFTLENBQUMsWUFBWSxFQUN0QixTQUFTLENBQUMsY0FBYyxFQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUNqQyxTQUFTLENBQUMsTUFBTSxFQUNoQixTQUFTLENBQUMsWUFBWSxDQUN2QixDQUNGLENBQUM7WUFFSixLQUFLLDBCQUEwQjtnQkFDN0IsT0FBTyxvQkFBb0IsQ0FDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQ3BCLFNBQVMsQ0FBQyxNQUFNLEVBQ2hCLFNBQVMsQ0FBQyxZQUFZLEVBQ3RCLFNBQVMsQ0FBQyxhQUFhLEVBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FDckQsQ0FBQztZQUVKLEtBQUssY0FBYztnQkFDakIsT0FBTyxhQUFhLENBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQzlDLENBQUM7WUFFSixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sYUFBYSxDQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDcEIsU0FBUyxDQUFDLE1BQU0sRUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUM5QyxDQUFDO1lBRUo7Z0JBQ0UsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY29yZE9wZXJhdGlvbiB9IGZyb20gJ0BvcmJpdC9yZWNvcmRzJztcbmltcG9ydCB7IFN5bmNPcGVyYXRpb25Qcm9jZXNzb3IgfSBmcm9tICcuLi9zeW5jLW9wZXJhdGlvbi1wcm9jZXNzb3InO1xuaW1wb3J0IHtcbiAgcmVjb3JkQWRkZWQsXG4gIHJlbGF0ZWRSZWNvcmRBZGRlZCxcbiAgcmVsYXRlZFJlY29yZFJlbW92ZWQsXG4gIHJlbGF0ZWRSZWNvcmRSZXBsYWNlZCxcbiAgcmVsYXRlZFJlY29yZHNSZXBsYWNlZCxcbiAgcmVjb3JkUmVtb3ZlZCxcbiAgcmVjb3JkVXBkYXRlZFxufSBmcm9tICcuL3V0aWxzL3NjaGVtYS1jb25zaXN0ZW5jeS11dGlscyc7XG5cbi8qKlxuICogQW4gb3BlcmF0aW9uIHByb2Nlc3NvciB0aGF0IGVuc3VyZXMgdGhhdCBhIGNhY2hlJ3MgZGF0YSBpcyBjb25zaXN0ZW50IHdpdGhcbiAqIGl0cyBhc3NvY2lhdGVkIHNjaGVtYS4gVGhpcyBpbmNsdWRlcyBtYWludGVuYW5jZSBvZiBpbnZlcnNlIGFuZCBkZXBlbmRlbnRcbiAqIHJlbGF0aW9uc2hpcHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTeW5jU2NoZW1hQ29uc2lzdGVuY3lQcm9jZXNzb3IgZXh0ZW5kcyBTeW5jT3BlcmF0aW9uUHJvY2Vzc29yIHtcbiAgYWZ0ZXIob3BlcmF0aW9uOiBSZWNvcmRPcGVyYXRpb24pOiBSZWNvcmRPcGVyYXRpb25bXSB7XG4gICAgc3dpdGNoIChvcGVyYXRpb24ub3ApIHtcbiAgICAgIGNhc2UgJ2FkZFJlY29yZCc6XG4gICAgICAgIHJldHVybiByZWNvcmRBZGRlZCh0aGlzLmFjY2Vzc29yLnNjaGVtYSwgb3BlcmF0aW9uLnJlY29yZCk7XG5cbiAgICAgIGNhc2UgJ2FkZFRvUmVsYXRlZFJlY29yZHMnOlxuICAgICAgICByZXR1cm4gcmVsYXRlZFJlY29yZEFkZGVkKFxuICAgICAgICAgIHRoaXMuYWNjZXNzb3Iuc2NoZW1hLFxuICAgICAgICAgIG9wZXJhdGlvbi5yZWNvcmQsXG4gICAgICAgICAgb3BlcmF0aW9uLnJlbGF0aW9uc2hpcCxcbiAgICAgICAgICBvcGVyYXRpb24ucmVsYXRlZFJlY29yZFxuICAgICAgICApO1xuXG4gICAgICBjYXNlICdyZXBsYWNlUmVsYXRlZFJlY29yZCc6XG4gICAgICAgIHJldHVybiByZWxhdGVkUmVjb3JkUmVwbGFjZWQoXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5zY2hlbWEsXG4gICAgICAgICAgb3BlcmF0aW9uLnJlY29yZCxcbiAgICAgICAgICBvcGVyYXRpb24ucmVsYXRpb25zaGlwLFxuICAgICAgICAgIG9wZXJhdGlvbi5yZWxhdGVkUmVjb3JkLFxuICAgICAgICAgIHRoaXMuYWNjZXNzb3IuZ2V0UmVsYXRlZFJlY29yZFN5bmMoXG4gICAgICAgICAgICBvcGVyYXRpb24ucmVjb3JkLFxuICAgICAgICAgICAgb3BlcmF0aW9uLnJlbGF0aW9uc2hpcFxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgY2FzZSAncmVwbGFjZVJlbGF0ZWRSZWNvcmRzJzpcbiAgICAgICAgcmV0dXJuIHJlbGF0ZWRSZWNvcmRzUmVwbGFjZWQoXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5zY2hlbWEsXG4gICAgICAgICAgb3BlcmF0aW9uLnJlY29yZCxcbiAgICAgICAgICBvcGVyYXRpb24ucmVsYXRpb25zaGlwLFxuICAgICAgICAgIG9wZXJhdGlvbi5yZWxhdGVkUmVjb3JkcyxcbiAgICAgICAgICB0aGlzLmFjY2Vzc29yLmdldFJlbGF0ZWRSZWNvcmRzU3luYyhcbiAgICAgICAgICAgIG9wZXJhdGlvbi5yZWNvcmQsXG4gICAgICAgICAgICBvcGVyYXRpb24ucmVsYXRpb25zaGlwXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICBjYXNlICdyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMnOlxuICAgICAgICByZXR1cm4gcmVsYXRlZFJlY29yZFJlbW92ZWQoXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5zY2hlbWEsXG4gICAgICAgICAgb3BlcmF0aW9uLnJlY29yZCxcbiAgICAgICAgICBvcGVyYXRpb24ucmVsYXRpb25zaGlwLFxuICAgICAgICAgIG9wZXJhdGlvbi5yZWxhdGVkUmVjb3JkLFxuICAgICAgICAgIHRoaXMuYWNjZXNzb3IuZ2V0UmVjb3JkU3luYyhvcGVyYXRpb24ucmVsYXRlZFJlY29yZClcbiAgICAgICAgKTtcblxuICAgICAgY2FzZSAncmVtb3ZlUmVjb3JkJzpcbiAgICAgICAgcmV0dXJuIHJlY29yZFJlbW92ZWQoXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5zY2hlbWEsXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5nZXRSZWNvcmRTeW5jKG9wZXJhdGlvbi5yZWNvcmQpXG4gICAgICAgICk7XG5cbiAgICAgIGNhc2UgJ3VwZGF0ZVJlY29yZCc6XG4gICAgICAgIHJldHVybiByZWNvcmRVcGRhdGVkKFxuICAgICAgICAgIHRoaXMuYWNjZXNzb3Iuc2NoZW1hLFxuICAgICAgICAgIG9wZXJhdGlvbi5yZWNvcmQsXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5nZXRSZWNvcmRTeW5jKG9wZXJhdGlvbi5yZWNvcmQpXG4gICAgICAgICk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==