UNPKG

@aws-amplify/datastore

Version:

AppSyncLocal support for aws-amplify

54 lines (52 loc) 2.16 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModelSortPredicateCreator = void 0; class ModelSortPredicateCreator { static createPredicateBuilder(modelDefinition) { const { name: modelName } = modelDefinition; const fieldNames = new Set(Object.keys(modelDefinition.fields)); const predicate = new Proxy({}, { get(_target, propertyKey, receiver) { const field = propertyKey; if (!fieldNames.has(field)) { throw new Error(`Invalid field for model. field: ${String(field)}, model: ${modelName}`); } const result = (sortDirection) => { ModelSortPredicateCreator.sortPredicateGroupsMap .get(receiver) ?.push({ field, sortDirection }); return receiver; }; return result; }, }); ModelSortPredicateCreator.sortPredicateGroupsMap.set(predicate, []); return predicate; } static isValidPredicate(predicate) { return ModelSortPredicateCreator.sortPredicateGroupsMap.has(predicate); } static getPredicates(predicate, throwOnInvalid = true) { if (throwOnInvalid && !ModelSortPredicateCreator.isValidPredicate(predicate)) { throw new Error('The predicate is not valid'); } const predicateGroup = ModelSortPredicateCreator.sortPredicateGroupsMap.get(predicate); if (predicateGroup) { return predicateGroup; } else { throw new Error('Predicate group not found'); } } // transforms cb-style predicate into Proxy static createFromExisting(modelDefinition, existing) { if (!existing || !modelDefinition) { return undefined; } return existing(ModelSortPredicateCreator.createPredicateBuilder(modelDefinition)); } } exports.ModelSortPredicateCreator = ModelSortPredicateCreator; ModelSortPredicateCreator.sortPredicateGroupsMap = new WeakMap(); //# sourceMappingURL=sort.js.map