UNPKG

@reactionable/amplify

Version:
45 lines 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.queryList = void 0; const tslib_1 = require("tslib"); const Query_1 = require("../query/Query"); function queryList(options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return fetchListData([], options); }); } exports.queryList = queryList; function fetchListData(items, options) { var _a; return tslib_1.__awaiter(this, void 0, void 0, function* () { const result = yield (0, Query_1.query)(Object.assign(Object.assign({}, options), { rawData: true })); const data = extractListData(result); items.push(...data.items); // Aws do not apply filters before applying limit const limit = (_a = options === null || options === void 0 ? void 0 : options.variables) === null || _a === void 0 ? void 0 : _a.limit; const limitNotReached = limit && items.length - 1 < limit; const shouldFetchMore = data.nextToken && (options.queryAll || limitNotReached); if (!shouldFetchMore) { return Object.assign(Object.assign({}, data), { items }); } return fetchListData(items, Object.assign(Object.assign({}, options), { // Set next token variable variables: Object.assign(options.variables || {}, { nextToken: data.nextToken, }) })); }); } function extractListData(result) { let data = result; while (!isAmplifyListType(data)) { if (!data) { throw new Error("No data"); } data = data[Object.keys(data)[0]]; } return data; } function isAmplifyListType(data) { return Array.isArray(data === null || data === void 0 ? void 0 : data.items); } //# sourceMappingURL=QueryList.js.map