@aws-sdk/client-dynamodb
Version:
AWS SDK for JavaScript Dynamodb Client for Node.js, Browser and React Native
87 lines • 3.48 kB
JavaScript
import { __asyncGenerator, __await, __awaiter, __generator, __read, __spread } from "tslib";
import { DynamoDB } from "../DynamoDB";
import { DynamoDBClient } from "../DynamoDBClient";
import { QueryCommand } from "../commands/QueryCommand";
/**
* @private
*/
var makePagedClientRequest = function (client, input) {
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, client.send.apply(client, __spread([new QueryCommand(input)], args))];
case 1:
// @ts-ignore
return [2 /*return*/, _a.sent()];
}
});
});
};
/**
* @private
*/
var makePagedRequest = function (client, input) {
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, client.query.apply(client, __spread([input], args))];
case 1:
// @ts-ignore
return [2 /*return*/, _a.sent()];
}
});
});
};
export function paginateQuery(config, input) {
var additionalArguments = [];
for (var _i = 2; _i < arguments.length; _i++) {
additionalArguments[_i - 2] = arguments[_i];
}
return __asyncGenerator(this, arguments, function paginateQuery_1() {
var token, hasNext, page;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
token = config.startingToken || undefined;
hasNext = true;
_a.label = 1;
case 1:
if (!hasNext) return [3 /*break*/, 9];
input.ExclusiveStartKey = token;
input["Limit"] = config.pageSize;
if (!(config.client instanceof DynamoDB)) return [3 /*break*/, 3];
return [4 /*yield*/, __await(makePagedRequest.apply(void 0, __spread([config.client, input], additionalArguments)))];
case 2:
page = _a.sent();
return [3 /*break*/, 6];
case 3:
if (!(config.client instanceof DynamoDBClient)) return [3 /*break*/, 5];
return [4 /*yield*/, __await(makePagedClientRequest.apply(void 0, __spread([config.client, input], additionalArguments)))];
case 4:
page = _a.sent();
return [3 /*break*/, 6];
case 5: throw new Error("Invalid client, expected DynamoDB | DynamoDBClient");
case 6: return [4 /*yield*/, __await(page)];
case 7: return [4 /*yield*/, _a.sent()];
case 8:
_a.sent();
token = page.LastEvaluatedKey;
hasNext = !!token;
return [3 /*break*/, 1];
case 9: return [4 /*yield*/, __await(undefined)];
case 10:
// @ts-ignore
return [2 /*return*/, _a.sent()];
}
});
});
}
//# sourceMappingURL=QueryPaginator.js.map