UNPKG

@azure/cosmos

Version:
57 lines 2.12 kB
"use strict"; // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. Object.defineProperty(exports, "__esModule", { value: true }); exports.OrderByQueryProcessingStrategy = void 0; const OrderByQueryContinuationToken_js_1 = require("../../documents/ContinuationToken/OrderByQueryContinuationToken.js"); /** * Strategy for processing ORDER BY queries * @hidden */ class OrderByQueryProcessingStrategy { sortOrders; constructor(sortOrders) { this.sortOrders = sortOrders; } /** * Creates additional query info from ORDER BY continuation token */ createAdditionalQueryInfo(parsedToken) { const orderByToken = parsedToken; const info = {}; if (orderByToken.orderByItems) info.orderByItems = orderByToken.orderByItems; if (orderByToken.documentRid) info.rid = orderByToken.documentRid; return Object.keys(info).length > 0 ? info : undefined; } /** * Creates filter context for ORDER BY continuation token processing */ createFilterContext(parsedToken) { const orderByToken = parsedToken; return { orderByItems: orderByToken.orderByItems, rid: orderByToken.documentRid, skipCount: orderByToken.skipCount, sortOrders: this.sortOrders, }; } /** * For ORDER BY queries, only apply filter to the target partition (last range in continuation) */ getPartitionFilterContext(filterContext, targetPartitionId, partitionTargetRangeId) { if (!filterContext) return undefined; const isTargetPartition = targetPartitionId === partitionTargetRangeId; return isTargetPartition ? filterContext : undefined; } /** * Parses ORDER BY continuation token */ parseContinuationToken(continuationToken) { return (0, OrderByQueryContinuationToken_js_1.parseOrderByQueryContinuationToken)(continuationToken); } } exports.OrderByQueryProcessingStrategy = OrderByQueryProcessingStrategy; //# sourceMappingURL=OrderByQueryProcessingStrategy.js.map