@orbit/record-cache
Version:
Orbit base classes used to access and maintain a set of records.
34 lines • 7.64 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SyncSchemaConsistencyProcessor = void 0;
const sync_operation_processor_1 = require("../sync-operation-processor");
const schema_consistency_utils_1 = require("./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.
*/
class SyncSchemaConsistencyProcessor extends sync_operation_processor_1.SyncOperationProcessor {
after(operation) {
switch (operation.op) {
case 'addRecord':
return (0, schema_consistency_utils_1.recordAdded)(this.accessor.schema, operation.record);
case 'addToRelatedRecords':
return (0, schema_consistency_utils_1.relatedRecordAdded)(this.accessor.schema, operation.record, operation.relationship, operation.relatedRecord);
case 'replaceRelatedRecord':
return (0, schema_consistency_utils_1.relatedRecordReplaced)(this.accessor.schema, operation.record, operation.relationship, operation.relatedRecord, this.accessor.getRelatedRecordSync(operation.record, operation.relationship));
case 'replaceRelatedRecords':
return (0, schema_consistency_utils_1.relatedRecordsReplaced)(this.accessor.schema, operation.record, operation.relationship, operation.relatedRecords, this.accessor.getRelatedRecordsSync(operation.record, operation.relationship));
case 'removeFromRelatedRecords':
return (0, schema_consistency_utils_1.relatedRecordRemoved)(this.accessor.schema, operation.record, operation.relationship, operation.relatedRecord, this.accessor.getRecordSync(operation.relatedRecord));
case 'removeRecord':
return (0, schema_consistency_utils_1.recordRemoved)(this.accessor.schema, this.accessor.getRecordSync(operation.record));
case 'updateRecord':
return (0, schema_consistency_utils_1.recordUpdated)(this.accessor.schema, operation.record, this.accessor.getRecordSync(operation.record));
default:
return [];
}
}
}
exports.SyncSchemaConsistencyProcessor = SyncSchemaConsistencyProcessor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1zY2hlbWEtY29uc2lzdGVuY3ktcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZXJhdGlvbi1wcm9jZXNzb3JzL3N5bmMtc2NoZW1hLWNvbnNpc3RlbmN5LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwwRUFBcUU7QUFDckUsK0VBUTBDO0FBRTFDOzs7O0dBSUc7QUFDSCxNQUFhLDhCQUErQixTQUFRLGlEQUFzQjtJQUN4RSxLQUFLLENBQUMsU0FBMEI7UUFDOUIsUUFBUSxTQUFTLENBQUMsRUFBRSxFQUFFO1lBQ3BCLEtBQUssV0FBVztnQkFDZCxPQUFPLElBQUEsc0NBQVcsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFN0QsS0FBSyxxQkFBcUI7Z0JBQ3hCLE9BQU8sSUFBQSw2Q0FBa0IsRUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQ3BCLFNBQVMsQ0FBQyxNQUFNLEVBQ2hCLFNBQVMsQ0FBQyxZQUFZLEVBQ3RCLFNBQVMsQ0FBQyxhQUFhLENBQ3hCLENBQUM7WUFFSixLQUFLLHNCQUFzQjtnQkFDekIsT0FBTyxJQUFBLGdEQUFxQixFQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDcEIsU0FBUyxDQUFDLE1BQU0sRUFDaEIsU0FBUyxDQUFDLFlBQVksRUFDdEIsU0FBUyxDQUFDLGFBQWEsRUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FDaEMsU0FBUyxDQUFDLE1BQU0sRUFDaEIsU0FBUyxDQUFDLFlBQVksQ0FDdkIsQ0FDRixDQUFDO1lBRUosS0FBSyx1QkFBdUI7Z0JBQzFCLE9BQU8sSUFBQSxpREFBc0IsRUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQ3BCLFNBQVMsQ0FBQyxNQUFNLEVBQ2hCLFNBQVMsQ0FBQyxZQUFZLEVBQ3RCLFNBQVMsQ0FBQyxjQUFjLEVBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQ2pDLFNBQVMsQ0FBQyxNQUFNLEVBQ2hCLFNBQVMsQ0FBQyxZQUFZLENBQ3ZCLENBQ0YsQ0FBQztZQUVKLEtBQUssMEJBQTBCO2dCQUM3QixPQUFPLElBQUEsK0NBQW9CLEVBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUNwQixTQUFTLENBQUMsTUFBTSxFQUNoQixTQUFTLENBQUMsWUFBWSxFQUN0QixTQUFTLENBQUMsYUFBYSxFQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQ3JELENBQUM7WUFFSixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sSUFBQSx3Q0FBYSxFQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUM5QyxDQUFDO1lBRUosS0FBSyxjQUFjO2dCQUNqQixPQUFPLElBQUEsd0NBQWEsRUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQ3BCLFNBQVMsQ0FBQyxNQUFNLEVBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FDOUMsQ0FBQztZQUVKO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0NBQ0Y7QUFoRUQsd0VBZ0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVjb3JkT3BlcmF0aW9uIH0gZnJvbSAnQG9yYml0L3JlY29yZHMnO1xuaW1wb3J0IHsgU3luY09wZXJhdGlvblByb2Nlc3NvciB9IGZyb20gJy4uL3N5bmMtb3BlcmF0aW9uLXByb2Nlc3Nvcic7XG5pbXBvcnQge1xuICByZWNvcmRBZGRlZCxcbiAgcmVsYXRlZFJlY29yZEFkZGVkLFxuICByZWxhdGVkUmVjb3JkUmVtb3ZlZCxcbiAgcmVsYXRlZFJlY29yZFJlcGxhY2VkLFxuICByZWxhdGVkUmVjb3Jkc1JlcGxhY2VkLFxuICByZWNvcmRSZW1vdmVkLFxuICByZWNvcmRVcGRhdGVkXG59IGZyb20gJy4vdXRpbHMvc2NoZW1hLWNvbnNpc3RlbmN5LXV0aWxzJztcblxuLyoqXG4gKiBBbiBvcGVyYXRpb24gcHJvY2Vzc29yIHRoYXQgZW5zdXJlcyB0aGF0IGEgY2FjaGUncyBkYXRhIGlzIGNvbnNpc3RlbnQgd2l0aFxuICogaXRzIGFzc29jaWF0ZWQgc2NoZW1hLiBUaGlzIGluY2x1ZGVzIG1haW50ZW5hbmNlIG9mIGludmVyc2UgYW5kIGRlcGVuZGVudFxuICogcmVsYXRpb25zaGlwcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFN5bmNTY2hlbWFDb25zaXN0ZW5jeVByb2Nlc3NvciBleHRlbmRzIFN5bmNPcGVyYXRpb25Qcm9jZXNzb3Ige1xuICBhZnRlcihvcGVyYXRpb246IFJlY29yZE9wZXJhdGlvbik6IFJlY29yZE9wZXJhdGlvbltdIHtcbiAgICBzd2l0Y2ggKG9wZXJhdGlvbi5vcCkge1xuICAgICAgY2FzZSAnYWRkUmVjb3JkJzpcbiAgICAgICAgcmV0dXJuIHJlY29yZEFkZGVkKHRoaXMuYWNjZXNzb3Iuc2NoZW1hLCBvcGVyYXRpb24ucmVjb3JkKTtcblxuICAgICAgY2FzZSAnYWRkVG9SZWxhdGVkUmVjb3Jkcyc6XG4gICAgICAgIHJldHVybiByZWxhdGVkUmVjb3JkQWRkZWQoXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5zY2hlbWEsXG4gICAgICAgICAgb3BlcmF0aW9uLnJlY29yZCxcbiAgICAgICAgICBvcGVyYXRpb24ucmVsYXRpb25zaGlwLFxuICAgICAgICAgIG9wZXJhdGlvbi5yZWxhdGVkUmVjb3JkXG4gICAgICAgICk7XG5cbiAgICAgIGNhc2UgJ3JlcGxhY2VSZWxhdGVkUmVjb3JkJzpcbiAgICAgICAgcmV0dXJuIHJlbGF0ZWRSZWNvcmRSZXBsYWNlZChcbiAgICAgICAgICB0aGlzLmFjY2Vzc29yLnNjaGVtYSxcbiAgICAgICAgICBvcGVyYXRpb24ucmVjb3JkLFxuICAgICAgICAgIG9wZXJhdGlvbi5yZWxhdGlvbnNoaXAsXG4gICAgICAgICAgb3BlcmF0aW9uLnJlbGF0ZWRSZWNvcmQsXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5nZXRSZWxhdGVkUmVjb3JkU3luYyhcbiAgICAgICAgICAgIG9wZXJhdGlvbi5yZWNvcmQsXG4gICAgICAgICAgICBvcGVyYXRpb24ucmVsYXRpb25zaGlwXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICBjYXNlICdyZXBsYWNlUmVsYXRlZFJlY29yZHMnOlxuICAgICAgICByZXR1cm4gcmVsYXRlZFJlY29yZHNSZXBsYWNlZChcbiAgICAgICAgICB0aGlzLmFjY2Vzc29yLnNjaGVtYSxcbiAgICAgICAgICBvcGVyYXRpb24ucmVjb3JkLFxuICAgICAgICAgIG9wZXJhdGlvbi5yZWxhdGlvbnNoaXAsXG4gICAgICAgICAgb3BlcmF0aW9uLnJlbGF0ZWRSZWNvcmRzLFxuICAgICAgICAgIHRoaXMuYWNjZXNzb3IuZ2V0UmVsYXRlZFJlY29yZHNTeW5jKFxuICAgICAgICAgICAgb3BlcmF0aW9uLnJlY29yZCxcbiAgICAgICAgICAgIG9wZXJhdGlvbi5yZWxhdGlvbnNoaXBcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgIGNhc2UgJ3JlbW92ZUZyb21SZWxhdGVkUmVjb3Jkcyc6XG4gICAgICAgIHJldHVybiByZWxhdGVkUmVjb3JkUmVtb3ZlZChcbiAgICAgICAgICB0aGlzLmFjY2Vzc29yLnNjaGVtYSxcbiAgICAgICAgICBvcGVyYXRpb24ucmVjb3JkLFxuICAgICAgICAgIG9wZXJhdGlvbi5yZWxhdGlvbnNoaXAsXG4gICAgICAgICAgb3BlcmF0aW9uLnJlbGF0ZWRSZWNvcmQsXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5nZXRSZWNvcmRTeW5jKG9wZXJhdGlvbi5yZWxhdGVkUmVjb3JkKVxuICAgICAgICApO1xuXG4gICAgICBjYXNlICdyZW1vdmVSZWNvcmQnOlxuICAgICAgICByZXR1cm4gcmVjb3JkUmVtb3ZlZChcbiAgICAgICAgICB0aGlzLmFjY2Vzc29yLnNjaGVtYSxcbiAgICAgICAgICB0aGlzLmFjY2Vzc29yLmdldFJlY29yZFN5bmMob3BlcmF0aW9uLnJlY29yZClcbiAgICAgICAgKTtcblxuICAgICAgY2FzZSAndXBkYXRlUmVjb3JkJzpcbiAgICAgICAgcmV0dXJuIHJlY29yZFVwZGF0ZWQoXG4gICAgICAgICAgdGhpcy5hY2Nlc3Nvci5zY2hlbWEsXG4gICAgICAgICAgb3BlcmF0aW9uLnJlY29yZCxcbiAgICAgICAgICB0aGlzLmFjY2Vzc29yLmdldFJlY29yZFN5bmMob3BlcmF0aW9uLnJlY29yZClcbiAgICAgICAgKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufVxuIl19